0

我正在将 csv 文件导入 postgres,并且想知道如何在使用COPY命令时导入正确的数据类型。例如,我有一列column_1 integer;并想6从我的 csv 文件中将值插入其中。

我运行命令copy "Table" from 'path/to/csv' DELIMITERS ',' CSV;,每次尝试执行此操作时都会收到错误消息ERROR: invalid input syntax for integer: "column_1"。我发现这是因为它会自动将 csv 文件中的每条数据作为字符串或文本导入。如果我将列类型更改为text然后它可以成功运行,但这违背了使用数字的目的,因为我需要它进行各种计算。有没有办法在传输时保存数据类型?我需要在 csv 文件中更改什么吗?还是有另一种数据类型要分配给column_1?希望这是有道理的。提前致谢!

4

1 回答 1

0

我这样做了,它完美地工作:我把普通数字放在 stack.csv 中
(stack.csv 只有一个值 6)

# create table stack(i int);
#  \copy stack from 'stack.csv' with (format csv);

我在您的评论中读到您的 CSV 文件中有 25 列。您的表中至少需要有 25 列。所有列都需要从 CSV 映射。如果表中有超过 25 列,则只需要映射从 CSV 映射的列。这就是它在text字段中起作用的原因,因为所有数据都放在一个行单元格中。

如果您的 CSV 文件中的“字段”列多于格式,则如下所示

\copy stack(column1, column2, ..., column25) from 'stack.csv' with (format csv);
于 2014-11-03T05:46:28.557 回答