質問編集履歴

3

より事例を細かく記載

2016/09/20 08:39

投稿

terate
terate

スコア103

test CHANGED
@@ -1 +1 @@
1
- 複数行レコードを一気に作成したい
1
+ バルクインサート仕方
test CHANGED
@@ -1 +1,51 @@
1
+ この記事を参考にしてバルクインサートを試みています。
2
+
3
+
4
+
5
+ http://qiita.com/xend/items/79184ded56158ea1b97a
6
+
7
+ ```
8
+
9
+ books = []
10
+
11
+ 10.times do |i|
12
+
13
+ books << Book.new(:name => "book #{i}")
14
+
15
+ end
16
+
17
+ Book.import books
18
+
19
+ ```
20
+
21
+
22
+
23
+ 上記記事内のコード最終行でbookテーブルに配列の中のハッシュを1行として複数行をいっきに入れていると認識しているのですが、
24
+
25
+
26
+
27
+ meibo = [{"id" => 1,"name" => "sato"},{"id" => 2,"name" => "ishi"}]
28
+
29
+
30
+
31
+ という配列の中のハッシュがある場合、
32
+
33
+
34
+
35
+ Book.import meibo
36
+
37
+
38
+
39
+ とだけすれば、
40
+
41
+ ```
42
+
43
+ 10.times do |i|
44
+
45
+ books << Book.new(:name => "book #{i}")
46
+
47
+ end
48
+
49
+ ```
50
+
1
- rubyプログラムで複数行レコードを発行するSQL文をどのように作成したら良いでしょうか?
51
+ こういった上記のようなnewして配列にいれる処理は必要なく、同じことなのでしょうか?

2

2016/09/20 08:39

投稿

terate
terate

スコア103

test CHANGED
File without changes
test CHANGED
@@ -1,71 +1 @@
1
- 配列listsの中のハッシュをそれぞれ1行ずつinsert文を作成してdbに入れたいのですが(下記だと計3行)、参照ページを参考にやってみているのですがうまくいきません。
2
-
3
- どのようにしたら良いでしょうか?
1
+ rubyプログラムで複数行のレコードを発行するSQL文をどのように作成したら良いでしょうか?
4
-
5
-
6
-
7
- lists = [{:id=>1, :name=>”ishii", :text=>"fugafuga”},{:id=>2, :name=>”sato", :text=>"fugafuga”},{:id=>3, :name=>”tanaka", :text=>"fugafuga”}]
8
-
9
-
10
-
11
- maibo = []
12
-
13
-
14
-
15
- lists.each do |list|
16
-
17
- meibo << Meibo.new(list)
18
-
19
- end
20
-
21
-
22
-
23
- Meibo.import meibo
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
- 参照元URL:
34
-
35
- http://qiita.com/xend/items/79184ded56158ea1b97a
36
-
37
- ```
38
-
39
- #RailsでBULK INSERTを使う
40
-
41
-
42
-
43
- RailsのActiveRecordでBULK INSERTを使うには、activerecord-importという大変便利なgemがあるので利用させていただきます。
44
-
45
- activerecord-import
46
-
47
-
48
-
49
- 使い方はとても簡単で、登録するレコード(model)のインスタンスをすべて配列にいれて、クラスメソッドのimportにそれを渡すだけです。
50
-
51
-
52
-
53
- activerecord-import.rb
54
-
55
- books = []
56
-
57
- 10.times do |i|
58
-
59
- books << Book.new(:name => "book #{i}")
60
-
61
- end
62
-
63
- Book.import books
64
-
65
- これで10回分のINSERT文が1つにまとめられます。
66
-
67
-
68
-
69
-
70
-
71
- ```

1

2016/09/17 00:53

投稿

terate
terate

スコア103

test CHANGED
@@ -1 +1 @@
1
- BULK INSERTを使って複数行のレコードを一気に作成したい
1
+ 複数行のレコードを一気に作成したい
test CHANGED
File without changes