PostgreSQL:在循环中执行查询 - 性能问题

时间:2016-03-19 15:32:23

标签: sql bash postgresql

我需要将文件中的数据复制到PostgreSQL数据库中。为此,我在循环中使用bash解析该文件并生成相应的插入查询。麻烦的是,为了执行该循环需要花费大量时间。

1)我可以做些什么来加速循环?我应该在循环之前打开一种连接并在之后关闭吗?

2)我是否应该在循环中使用临时文本文件,以便在那里写入唯一值并使用文本实用程序在其中搜索,而不是将它们写入数据库并在那里执行搜索?

2 个答案:

答案 0 :(得分:1)

在每次插入后,您使用的编程语言是否都会提交?如果是这样,你可以做的最简单的事情是在插入所有行之后而不是在每行之后提交。

您也可以批量插入,但使用PostgreSQL copy命令可以减少工作量并且速度非常快。

答案 1 :(得分:0)

如果您坚持使用BASH,您可以按定义的行号拆分文件,然后在每行末尾使用&执行paralel命令。

我强烈建议您尝试不同的方法或编程语言,因为比尔说,bash不与postgres交谈,如果你的文件源是另一个postgres数据库,你也可以使用pg_dump功能。 / p>