我刚刚为我的 Rails 应用程序从 sqlite 切换到 postgresql,并尝试通过 csvs 将数据导入数据库。我已经能够很好地导入数据,但是,当我导入 csv 时,我无法获取 id、创建和更新字段以自动填充。我在 csv 文件中将它们留空。当我导入 csv 时,有没有办法让这些字段自动填充?
问问题
698 次
1 回答
1
如果您希望在使用 导入时将某些字段设置为默认值COPY
,则需要在COPY
命令中省略这些字段。
代替:
COPY tablename FROM 'somefile.csv' FORMAT csv;
你会写:
COPY tablename (col1, col2, col3) FROM 'somefile.csv' FORMAT csv;
并完全省略CSV 数据中的列,而不是仅仅将它们留空。当您省略列时,它们会自动设置为DEFAULT
.
不幸的是,PostgreSQL 无法忽略输入 CSV 的列,因此 CSV 的列必须与列表中的列匹配COPY
。如果您无法修改 CSV 输入,则可以COPY
对具有相同结构的一个TEMPORARY
或UNLOGGED
表,然后执行INSERT INTO real_target (col1, col2, col3) SELECT col1, col2, col3 FROM the_temp_table;
于 2014-01-24T01:41:56.933 回答