0

INSERT..VALUES 構文を使用して複数の行を挿入する Ruby 固有のソリューションを探しています。

現在、個々の挿入ステートメントを生成していますが、これはデータベースの観点から非常に非効率的です。関連する質問がいくつか見つかりましたが、正確には探しているものではありません。

INSERT ステートメントの例 (現在):

INSERT INTO qux SELECT 1,3,'foo';
INSERT INTO qux SELECT 4,11,'bar';
INSERT INTO qux SELECT 12,19,'baz';

Ruby on Railsアクティブレコードを使用して複数のレコードを挿入する

上記の質問では、ActiveRecord を使用して目的を達成していますが、純粋な Ruby のアプローチを探しています。

ruby mysql2 でトランザクションを実行する方法

上記の質問では、トランザクションを使用して、私のニーズと同様の結果を達成しています。ただし、これは INSERT VALUES ステートメントを 1 つ使用する場合ほど効率的ではありません。

サンプルデータ:

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');

この機能を備えた既存の宝石/コードベースはありますか?

更新: この特定のプロジェクトでは ActiveRecord を使用しておらず、使用する予定もありません。私は MySQL データベースと直接やり取りしており、問題の解決策を知りたいと思っています。1 つの選択肢として、自分で機能を構築することがあります。ただし、ここで車輪を再発明したくありません。

4

2 に答える 2

0
INSERT INTO SomeTable ( Col1, Col2, Col3 )
SELECT Val1, Val2, Val3 FROM SomeOtherTable
UNION
SELECT 'MyProvidedVal1', 'MyProvidedVal2', 'MyProvidedVal3'
UNION
SELECT 'MyProvidedVal4', 'MyProvidedVal5', 'MyProvidedVal6'

ソース:selectを使用して複数の行を挿入します

于 2013-01-24T00:50:47.897 に答える