我有一个Rails应用程序,我正在尝试通过PostgreSQL的复制命令将数据加载到其中。该文件是CSV。表映射到导轨模型,我需要保留主键ID列,以便我可以使用Model.For_each播放数据 - 该表将具有5m+行。

我的问题是,如何构建我的CSV,以便可以将数据加载到表中并仍然允许ID列存在?这是一个令人沮丧的,因为我需要它的唯一原因是for_each方法。

无论如何,我尝试发送nulls,如:

NULL,col1,col2,col3,col4, etc.

但这行不通。

谢谢。

有帮助吗?

解决方案

无论您设置了null字符串哪种选项,因此在NULL中传递NULL将永远无法使用。您会告诉后端将主要键设置为null,无论该命令可能是什么,它都将永远不会允许。

我真的不知道保留主钥匙是什么意思。无论做什么,这都是将要保留的东西。如果您是说让数据库为您选择值,而主键是串行(自动提示),则明确命名所有列,但主要键:

COPY country (colA, colB, colC) FROM '/usr1/proj/bray/sql/country_data'; -- leave out pkey

也可能会更快地阅读有关您要使用的空字符串选项而不是猜测可能值的文档:

http://www.postgresql.org/docs/9.0/static/sql-copy.html

其他提示

使用CSV时的默认值是一个未引用的空字符串,例如:

,col1,col2,col3,,col5

这将创建一个看起来像:

NULL,'col1','col2','col3',NULL,'col5'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top