数据校正将CSV文件导出到Postgres

时间:2014-11-03 04:55:10

标签: postgresql csv postgresql-copy

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

我运行命令copy "Table" from 'path/to/csv' DELIMITERS ',' CSV;,每次尝试这样做时都会收到错误ERROR: invalid input syntax for integer: "column_1"。我发现这是因为它会自动将csv文件中的每一段数据都作为字符串或文本导入。如果我将列类型更改为text,那么它可以成功运行,但这会使用数字的目的,因为我需要它来进行各种计算。转移时有没有办法保存数据类型?我需要在csv文件中更改一些内容吗?或者是否有另一种数据类型要分配给column_1?希望这是有道理的。提前谢谢!

1 个答案:

答案 0 :(得分: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);