Ruby on rails 如何使用准备好的语句插入多行
我正在处理一个批量插入类,我决定使用准备好的语句将我的行导入数据库。(数据可以在无效状态下输入,稍后再修复,因此通过ActiveRecord是没有意义的) 要一次插入一行,我可以执行以下操作: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
@@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中动态创建值部分