我正在将一个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
?希望这是有道理的。提前谢谢!
答案 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);