我试图从mysql数据库中读取数据并将其写入JSON文件。我对node.js非常陌生,任何帮助都将不胜感激。
我写的代码:
var mysql = require('mysql');
var fs = require('fs');
var configFile = process.cwd() + "\\config.json";
var configFileContents = fs.readFileSync(configFile, 'utf8');
var config = JSON.parse(configFileContents);
//config = config[process.env.BLENV];
console.log(config.PROD.HTTP);
var connection = mysql.createConnection({
host : config.QA.SQLHostName,
user : config.QA.SQLUserName,
password : config.QA.SQLPassword,
database : config.QA.SQLDatabase,
multipleStatements: true
});
connection.connect();
var timeInMs = Date.now();
console.log(timeInMs);
connection.query(`
select
c.name as "Name",
cl.u_geographic_region as "Region",
CASE
WHEN cic.os like '%Windows%' THEN 'Windows'
WHEN cic.os like '%aix%' THEN 'AIX'
WHEN cic.os like '%esx%' THEN 'ESX'
WHEN cic.os like '%linux%' THEN 'Linux'
WHEN cic.os like '%solaris%' THEN 'Solaris'
ELSE 'UNKNOWN'
END as "Operating System",
ci.dns_domain as "Host domain",
ci.ip_address as "IP Address",
CASE
WHEN c.sys_class_name = 'cmdb_ci_computer' THEN 'Computer'
WHEN c.sys_class_name = 'cmdb_ci_win_server' THEN 'Windows Server'
WHEN c.sys_class_name = 'cmdb_ci_esx_server' THEN 'ESX Server'
WHEN c.sys_class_name = 'cmdb_ci_aix_server' THEN 'AIX Server'
WHEN c.sys_class_name = 'cmdb_ci_lb' THEN 'Load Balancer'
WHEN c.sys_class_name = 'cmdb_ci_lb_ace' THEN 'lb_ace'
WHEN c.sys_class_name = 'cmdb_ci_aix_lb_bigip' THEN 'lb_bigip'
WHEN c.sys_class_name = 'cmdb_ci_linux_server' THEN 'Linux Server'
WHEN c.sys_class_name = 'cmdb_ci_mainframe' THEN 'IBM Mainframe'
WHEN c.sys_class_name = 'cmdb_ci_solaris_server' THEN 'Solaris Server'
WHEN c.sys_class_name = 'cmdb_u_ci_ibmi_server' THEN 'IBMi Server'
WHEN c.sys_class_name = 'cmdb_ u_ci_ibmi_server' THEN 'IBMi Server'
WHEN c.sys_class_name = 'cmdb_u_server_appliance' THEN 'ServerAppliance'
ELSE 'Unknown'
END as "Class",
CASE
WHEN c.install_status = '1' THEN 'Installed'
WHEN c.install_status = '100' THEN 'Absent'
WHEN c.install_status = '2' THEN 'On Order'
WHEN c.install_status = '3' THEN 'In Maintenance'
WHEN c.install_status = '4' THEN 'Pending Install'
WHEN c.install_status = '5' THEN 'Pending Repair'
WHEN c.install_status = '6' THEN 'In Stock'
WHEN c.install_status = '7' THEN 'Retired'
WHEN c.install_status = '8' THEN 'Stolen'
WHEN c.install_status = '9' THEN 'In Use'
ELSE 'Unknown'
END As "lifecycle Status"
from
cmdb as c
join cmdb_ci ci on c.sys_id = ci.sys_id
join cmdb_ci_hardware as cih on c.sys_id = cih.sys_id
join cmdb_ci_computer cic on c.sys_id = cic.sys_id
join cmn_location as cl on cl.sys_id = c.location
where c.name is not null
`, function(err, rows, fields) {
if (err) throw err;
for (var i in rows) {
console.log('the rows are', rows[i]);
}
});
connection.end();现在,当我使用"node filename.js“运行代码时,可以将输出打印到我的控制台。但是我希望把它写到json文件中,这样我就可以处理数据并应用一些逻辑。
发布于 2017-02-27 19:12:38
如果您想要做的只是将JSON中的MySQL数据的输出写入一个文件,请替换.
for (var i in rows) {
console.log('the rows are', rows[i]);
}...with:
fs.writeFile("/path/to/file.json", JSON.stringify(rows), function(err) {
if (err) return console.log(err);
console.log("The file was saved!");
});关于JSON.stringify()在Objects/JSON/stringify的更多信息
https://stackoverflow.com/questions/42401423
复制相似问题