-1
INSERT INTO contacts_lists (contact_id, list_id)
          SELECT contact_id, 67544
          FROM plain_contacts

这里我想在sql中使用Copy命令而不是Insert命令来减少插入值的时间。我使用选择操作获取数据。如何使用 postgresql 中的 Copy 命令将其插入表中。你能举个例子吗?或任何其他建议以减少插入值的时间。

4

2 回答 2

2

由于您的行已经在数据库中(因为您显然可以SELECT),因此使用 COPY 不会以任何方式提高速度。

为了能够使用 COPY,您必须首先将值写入文本文件,然后将其读入数据库。但是,如果可以的话SELECT,写入文本文件是完全不必要的步骤,并且会减慢插入速度,而不是提高插入速度

你的陈述是尽可能快的。唯一可以加快速度的方法(除了购买更快的硬盘)是删除contact_lists包含该列的任何潜在索引,contact_id或者list_id在插入完成后重新创建索引。

于 2011-04-25T12:53:43.770 回答
1

我敢肯定,您可以在许多地方找到描述的语法。其中之一是这篇 wiki 文章

看起来它基本上是:

COPY plain_contacts (contact_id, 67544) TO some_file

COPY contacts_lists (contact_id, list_id) FROM some_file

但我只是从谷歌提供的资源中阅读。如果您在特定问题上需要帮助,请尝试并回复。

于 2011-04-25T12:08:26.083 回答