SQL语句没有意义

时间:2014-10-21 22:02:22

标签: sql json node.js

所以我正在使用一个名为json-sql的节点模块 https://github.com/2do2go/json-sql

但最终结果是

    sql.query
// insert into users (name, lastname, age, gender) values ($p1, $p2, 24, $p3);

sql.values
// { p1: 'John', p2: 'Snow', p3: 'male' }

是否有快速方法使SQL可读?我希望有一堆这些语句,并将其转换为.sql文件,以便稍后在SQL Server上运行

3 个答案:

答案 0 :(得分:0)

不幸的是,库无法本机生成可执行的符合MS SQL的语句。

有效的MS SQL预处理语句如下所示:

sp_EXECUTEsql @statement=N'Select @p as t', @parameters = N'@p varchar(50)', @p=N'Test'

所以在这种情况下,你想要做三件事:

  1. 使用库的options参数将ValuesPrefix设置为@,而不是默认$
  2. 编写某种方法来获取sql.values结果并生成上面@parameters的值以及每个参数值。
  3. 将所有部分连接成一个类似上面的声明。

答案 1 :(得分:0)

似乎你可以使用选项separatedValues: false来获得没有占位符的普通sql-query。

例如,在您的情况下:

var jsonSql = require('json-sql')({separatedValues: false});

sql.query
// insert into "users" ("name", "lastname", "age", "gender") values (\'John\', \'Snow\', 24, \'male\');

然后你只需要替换你不想要的字符(例如双引号);

我希望有人觉得这很有用。

答案 2 :(得分:-1)

模块显然打算将关联数组sql.values描述的值插入sql.query给出的查询字符串中。特定sql.querysql.values的结果将是

insert into users (name, lastname, age, gender) values ('John', 'Snow', 24, 'male')

这与许多程序化数据库接口中存在的“预准备语句”的概念在外观上相似,但在实现上有所不同。