【问题标题】:How to execute multiline mysql query statements in node js which has like 50 lines of query如何在具有 50 行查询的节点 js 中执行多行 mysql 查询语句
【发布时间】:2017-07-19 18:31:02
【问题描述】:

我一直在尝试通过 linux 系统中的 nodejs 执行 mysql 查询,但出现错误。我也启用了 multipleStatements: true 。 这是我尝试使用的查询部分:

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",
from
cmdb as c
join cmdb_ci ci on c.sys_id = ci.sys_id

在我的 Windows 笔记本电脑中,我能够通过将这个大 sql 查询放入 BackTicks 来实现它的结果。但是当我在linux中使用反引号时它失败了。谁能帮帮我。

【问题讨论】:

  • 您可能会觉得这很有帮助:stackoverflow.com/questions/6220420/…
  • 所以现在我应该在每行的末尾给出 \ 吗?即使那样它也不起作用。我使用的节点版本是 v0.10.31。
  • @tier1 - 感谢您的帮助。它工作并能够从 mysql 数据库中提取数据。

标签: mysql node.js npm


【解决方案1】:

在完成了一些问题之后。我发现我使用的节点版本(v0.10.32)无法读取反引号(`)。我用反引号在 v6 上测试了脚本,它完全有效。所以我在查询的每一行之后都给出了 \n 并且它起作用了。以下是更新后的查询。

"select c.name as 'Name',\n"+
"cl.u_geographic_region as 'Region',\n"+
"CASE\n"+
"WHEN cic.os like '%Windows%' THEN 'Windows'\n"+
"WHEN cic.os like '%aix%' THEN 'AIX'\n"+
"WHEN cic.os like '%esx%' THEN 'ESX'\n"+
"WHEN cic.os like '%linux%' THEN 'Linux'\n"+
"WHEN cic.os like '%solaris%' THEN 'Solaris'\n"+
"ELSE 'UNKNOWN'\n"+
"END as 'Operating System',\n"+
"ci.dns_domain as 'Host domain',\n"+
"ci.ip_address as 'IP Address',\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2012-04-14
    • 1970-01-01
    • 2014-09-25
    相关资源
    最近更新 更多