我们试图在Knex.raw中使用\ COPY命令。我们通过heroku / postgres连接和\ COPY是批量导入数据的唯一方法,因为我们没有超级用户权限。复制前的反斜杠将被删除或乘以,具体取决于您尝试的内容。
到目前为止,我们已经尝试使用它来逃避它 1. \ b 2. 3. String.fromCharCode(92) 4.连接
我们正在使用的全部功能是......
knex.raw("\COPY tablename (column1, column2, ...columnN) FROM STDIN " + csvValues).then(function(response){
console.log('the response from the copy', response);
});
我们在pg:psql环境中测试了这个确切的功能,它运行得很好。如果您知道更好的方法,请告诉我们!
此致 布兰登
答案 0 :(得分:1)
\copy
是psql(客户端)命令,它包装了 Postgres 的COPY
(服务器)。听起来好像你正试图将这两者结合起来,而这就是问题所在。
由于 knex.js 是一个查询构建器,因此它不会知道\copy
- \COPY
无效 SQL 在客户端场景中使用。
您提到您没有超级用户访问权限,如果您想引用文件,则COPY
需要访问权限。
如果由于这个原因您无法使用COPY
,则需要使用 psql 并利用其\copy
命令, knex.js 可能不是使用的工具。相反,您需要通过调用shell命令来访问它。
也许这批数据导入可以完全在 Javascript 之外完成?即通过直接使用 psql 的 bash 脚本?