【发布时间】:2013-07-13 19:30:26
【问题描述】:
我想将 CSV 文件复制到 Postgres 表。这张表大约有100列,所以如果没有必要我不想重写。
我正在使用\copy table from 'table.csv' delimiter ',' csv; 命令,但没有创建表,我得到ERROR: relation "table" does not exist。如果我添加一个空白表,我不会收到任何错误,但没有任何反应。我尝试了这个命令两三遍,没有任何输出或消息,但是当我通过 PGAdmin 检查它时,表没有更新。
有没有办法像我尝试的那样导入包含标题的表格?
【问题讨论】:
-
您的表名为
table?很混乱。该表是否存在,或者您是否要基于 CSV 创建它? (你不能) -
好吧,我给它起了别的名字,但在这个例子中,我们称之为表。我尝试了存在和不存在它我也尝试过
\copy table(column1, column2, ...) from 'table.csv' delimiter ',' csv;,但也没有运气。理想情况下,表格可以单独通过 CSV 创建,并使用该文件中的标题。 -
对于任何计划将大型 csv 转换为 postgres 表的人来说,这是一个提醒—— postgres 在单个表中的上限为 1600 列。您不能将表分块成 1600 列大小的表,然后再加入它们。您需要重新设计数据库。
-
如果你可以使用python,你可以使用d6tstack。它也负责架构更改。
标签: postgresql csv postgresql-copy