【发布时间】:2014-09-04 13:50:16
【问题描述】:
我想将数据从 SQL 服务器复制到 Scala 中的 vertica,我正在考虑使用 Anorm,但我没有找到任何关于批量插入的文档。如果 Anorm 不支持批量插入,我应该使用什么库?
【问题讨论】:
-
有
BatchSql,但是很慢。看到这个:stackoverflow.com/questions/24573242/…
我想将数据从 SQL 服务器复制到 Scala 中的 vertica,我正在考虑使用 Anorm,但我没有找到任何关于批量插入的文档。如果 Anorm 不支持批量插入,我应该使用什么库?
【问题讨论】:
BatchSql,但是很慢。看到这个:stackoverflow.com/questions/24573242/…
确实如此,使用BatchSql。这是一个直接来自测试的示例
BatchSql(
"SELECT * FROM tbl WHERE a = {a}, b = {b}",
Seq(
Seq[NamedParameter]("a" -> 0, "b" -> -1),
Seq[NamedParameter]("a" -> 1, "b" -> 2)
)
)
但是,正如 @LimbSoup 在 cmets 中指出的那样,这并不比按顺序执行多个插入更快,因为它在后台使用 executeBatch 向数据库发送包含查询序列的语句。
唯一的性能提升将来自网络延迟(因为单个语句被发送到数据库)。
请参阅此答案以了解替代方法:Batch insert with table that has many columns using Anorm
【讨论】:
BatchSql 的实现,但无法验证您所说的。看起来 anorm 正确地执行了批处理查询,你能指出证明你假设的相关代码吗?