【问题标题】:Can I import CSV data into a table without knowing the columns of the CSV?我可以在不知道 CSV 列的情况下将 CSV 数据导入表格吗?
【发布时间】:2017-06-30 01:30:38
【问题描述】:

我有一个 CSV 文件 file.csv

在 Postgres 中,我创建了一个名为 grants 的表:

CREATE TABLE grants
(

)
WITH (
  OIDS=FALSE
);
ALTER TABLE grants
  OWNER TO postgres;

我想导入 file.csv 数据,而不必在 Postgres 中指定列。

但如果我运行 COPY grants FROM '/PATH/TO/grants.csv' CSV HEADER;,我会收到此错误:ERROR: extra data after last expected column

如何在不指定列和类型的情况下导入 CSV 数据?

【问题讨论】:

标签: postgresql csv


【解决方案1】:

错误是正常的。 您创建了一个没有列的表。 COPY 命令尝试将数据导入到结构良好的表中。 所以在执行 COPY 命令之前,您必须创建与您的 csv 文件对应的表。

我发现pgfutter

“以简单的方式将 CSV 和 JSON 导入 PostgreSQL。这个小工具将您在只想将一些数据转储到数据库中时通常必须处理的所有麻烦和脏话抽象化”

也许是一个解决方案...

【讨论】:

    【解决方案2】:

    对我来说最好的方法是将 csv 转换为数据框,然后按照

    https://github.com/sp-anna-jones/data_science/wiki/Importing-pandas-dataframe-to-postgres

    【讨论】:

      【解决方案3】:

      不,不能使用 COPY 命令

      如果指定了列列表,COPY 将只复制列中的数据 指定的列到文件或从文件。如果有任何列 不在列列表中的表,COPY FROM 将插入 这些列的默认值。

      COPY 不会为您创建列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-05
        • 2021-03-22
        • 2011-04-13
        • 1970-01-01
        • 2013-05-26
        • 1970-01-01
        相关资源
        最近更新 更多