使用DuckDB Node.js库执行SQL报错:Parser Error: syntax error at or near 'into'
解决Node.js中DuckDB执行多条SQL报错的问题
问题原因
Node.js版DuckDB客户端默认禁用了单次执行多条SQL语句的功能,而DuckDB终端默认支持该特性,这就是你在终端能正常执行、但在Node.js中报错的核心原因。
解决方案
方案1:拆分语句分别执行
将建表和插入语句分开调用run方法执行,这是最安全的方式:
const duckdb = require('duckdb'); const db = new duckdb.Database(':memory:'); // 执行建表语句 db.run("create table runs_4fd1 (config JSON, sample JSON)", (err) => { if (err) throw err; // 建表完成后执行插入语句 db.run("insert into runs_4fd1 values ('null', null)", (err) => { if (err) throw err; console.log("数据插入完成"); }); });
方案2:开启多语句执行模式
如果需要一次性执行多条语句,可以在初始化数据库时配置multiple_statements: true,但注意这种方式会增加SQL注入风险,仅在可控场景下使用:
const duckdb = require('duckdb'); // 开启多语句支持 const db = new duckdb.Database(':memory:', { multiple_statements: true }); // 用分号分隔多条语句,一次性执行 db.run(`create table runs_4fd1 (config JSON, sample JSON); insert into runs_4fd1 values ('null', null);`, (err) => { if (err) throw err; console.log("建表及插入操作完成"); });
内容的提问来源于stack exchange,提问作者LOTR
相关产品推荐
相关产品推荐

