1

我刚刚为我的 Rails 应用程序从 sqlite 切换到 postgresql,并尝试通过 csvs 将数据导入数据库。我已经能够很好地导入数据,但是,当我导入 csv 时,我无法获取 id、创建和更新字段以自动填充。我在 csv 文件中将它们留空。当我导入 csv 时,有没有办法让这些字段自动填充?

4

1 回答 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对具有相同结构的一个TEMPORARYUNLOGGED表,然后执行INSERT INTO real_target (col1, col2, col3) SELECT col1, col2, col3 FROM the_temp_table;

于 2014-01-24T01:41:56.933 回答