【发布时间】:2013-01-22 21:26:26
【问题描述】:
我正在寻找一种特定于 ruby 的解决方案来使用 INSERT..VALUES syntax 插入多行
目前我正在生成单独的插入语句,但从数据库的角度来看这是非常低效的。我发现了一些相关的问题,但不是我要找的。p>
示例 INSERT 语句(当前):
INSERT INTO qux SELECT 1,3,'foo';
INSERT INTO qux SELECT 4,11,'bar';
INSERT INTO qux SELECT 12,19,'baz';
INSERT multiple records using ruby on rails active record
上述问题使用 ActiveRecord 来实现我想要做的事情,但我正在寻找一种纯 ruby 方法。
how do I perform transactions with ruby mysql2
上述问题使用事务来实现与我的需求相似的结果。但是,这仍然不如使用一个 INSERT VALUES 语句高效。
示例数据:
start,end,name
1,3,foo
4,11,bar
12,19,baz
INSERT VALUES 语句(需要):
INSERT INTO qux VALUES (1,3,'foo'),(4,11,'bar'),(12,19,'baz');
任何已经存在的具有此功能的 gem/代码库?
更新:我不使用也不打算在这个特定项目中使用 ActiveRecord。我直接与 MySQL 数据库进行交互,并且很想知道我的问题的任何解决方案。一种选择可能是自己构建功能;但是我不想在这里重新发明轮子。
【问题讨论】:
-
在没有 AR 的情况下有什么方法可以做到这一点?
-
我支持 ar-extensions 的建议,但如果您决定避免使用 ActiveRecord 并且您的数据模型足够简单,只需构建一个巨大的 SQL 字符串来执行并执行插入即可推出您自己的解决方案.