Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用准备好的语句插入多行_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails 如何使用准备好的语句插入多行

Ruby on rails 如何使用准备好的语句插入多行,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我正在处理一个批量插入类,我决定使用准备好的语句将我的行导入数据库。(数据可以在无效状态下输入,稍后再修复,因此通过ActiveRecord是没有意义的) 要一次插入一行,我可以执行以下操作: @@connection.prepare('insert_foos', <<-SQL.strip_heredoc INSERT INTO foos (number, registration_date, record_id) VALUES ($1, $2, $3) RE

我正在处理一个批量插入类,我决定使用准备好的语句将我的行导入数据库。(数据可以在无效状态下输入,稍后再修复,因此通过ActiveRecord是没有意义的)

要一次插入一行,我可以执行以下操作:

@@connection.prepare('insert_foos', <<-SQL.strip_heredoc
    INSERT INTO foos (number, registration_date, record_id)
    VALUES ($1, $2, $3)
    RETURNING id
  SQL
)

但是,如果我可以聚合一组要插入的行,然后使用一个
exec\u-prepared
调用将它们全部插入,那就更好了。对于PHP也提出了类似的问题,建议动态准备语句以支持所需的记录数,但我宁愿只准备一次语句。这可能吗?

您可以将多行传递给
values
子句:

VALUES ($1, $2, $3), ($4, $5, $6)

请注意,
返回id
现在将返回两行,而不是一行。

您可以将多行传递给
values
子句:

VALUES ($1, $2, $3), ($4, $5, $6)

请注意,
返回id
现在将返回两行而不是一行。

这只适用于两行。我需要支持任意数量的行。您可以在Rubyth中动态创建
部分。这只适用于两行。我需要支持任意数量的行。您可以在Ruby中动态创建
部分