postgresql 如何使用pg库将CSV数据上传到PSQL?[已关闭]

c6ubokkw  于 2023-03-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(146)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
5天前关闭。
截至5天前,社区正在审查是否重新讨论此问题。
Improve this question
在我的项目中,我最初使用pg库中的一个新池启动了PG数据库的一个示例。随后,我还想将CSV数据上载到该数据库中的一个现有表中,但我相信我当前的pg查询会导致一些问题,因为在开始处使用了反斜杠()。

const pool = new Pool({
    database: 'users'
});

pool.query(`\COPY users (firstName, lastName, age) FROM '/Users/Jason/project/server/sample.csv' DELIMITER ',' CSV HEADER`)

我收到的错误如下:

/Users/Jason/project/server/node_modules/pg-protocol/dist/parser.js:287
        const message = name === 'notice' ? new messages_1.NoticeMessage(length, messageValue) : new messages_1.DatabaseError(messageValue, length, name);

如果我在终端和当前数据库中提交相同的查询,它会完全正确地上传数据,没有任何问题。为什么我启动服务器时无法上传项目中的csv数据?

irtuqstp

irtuqstp1#

\COPYCOPY不是一回事:

  • \COPY或只是\copypsql自己的、内部的、专有的元命令,而不是实际的SQL语句。PostgreSQL不理解psql元命令 rawpsql首先将它们转换为普通SQL命令,然后将它们发送到数据库。一些元命令转换为多个查询,其输出是一系列查询的组合输出的结果。如果您在启动psql时添加--echo-queries-e选项,则可以看到它们。
  • COPY(不带反斜杠)是一个SQL命令,您可能应该在应用中使用它。

您可能尝试使用\copy而不是copy来指向客户机系统本地的源文件,而该文件无法从数据库位置获得,在这种情况下,您可能要查找pg-copy-streams

相关问题