回答編集履歴
4
注意点を
test
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
調べたらSQLiteでもバルクインサートが使えるようなので。
|
6
6
|
|
7
7
|
|
8
|
+
|
9
|
+
##行程
|
8
10
|
|
9
11
|
1. テーブルAと全く同じテーブルADASHを作る。
|
10
12
|
|
@@ -18,7 +20,7 @@
|
|
18
20
|
|
19
21
|
|
20
22
|
|
21
|
-
バルクインサートとは
|
23
|
+
##補足:バルクインサートとは
|
22
24
|
|
23
25
|
**insert into テーブル名 values(...);**
|
24
26
|
|
@@ -30,6 +32,8 @@
|
|
30
32
|
|
31
33
|
|
32
34
|
|
35
|
+
###テーブルの複写
|
36
|
+
|
33
37
|
また、複写の手段ですが
|
34
38
|
|
35
39
|
```
|
@@ -38,11 +42,11 @@
|
|
38
42
|
|
39
43
|
```
|
40
44
|
|
41
|
-
という方法があります。全く同じ構造にしておくのがポイントで、この待避テーブルを作成するやり方はけっこう常套手段です。
|
45
|
+
という方法があります。全く同じ構造にしておくのがポイントで、この待避テーブルを作成するやり方はけっこうデータ処理の常套手段です。
|
42
46
|
|
43
47
|
|
44
48
|
|
45
|
-
あと、削除といっても、間違ってもdelete文を使わないでください。泣きを見ます。それから試す前に
|
49
|
+
あと、削除といっても、間違ってもdelete文を使わないでください。泣きを見ます。それから、**試す前に必ず、ロールバックできるようにバックアップをとっておく**ようにしてください。
|
46
50
|
|
47
51
|
|
48
52
|
|
3
削除の条件
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
2. テーブルBから取得したデータをテーブルADASHにバルクインサートで挿入
|
12
12
|
|
13
|
-
3. テーブルAを空にする
|
13
|
+
3. テーブルAを空にする。もし、残したいデータも存在する場合は該当条件のものだけをidなどで紐付け、delete文で削除する。
|
14
14
|
|
15
15
|
4. テーブルADASHの値をまるまるテーブルAに複写する。
|
16
16
|
|
2
バックアップ
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
元を見ましたがサブクエリを使っているものをupdateするのは非常に時間を要します。それに物量も万行単位なので、待避用のテーブルを作って、そこに一旦作成。その後、元のテーブルを削除してから、移し替えるという手段が速いでしょう。
|
1
|
+
元を見ましたがサブクエリを使っているものをupdateするのは非常に時間を要します。それに物量も万行単位なので、待避用のテーブルを作って、そこに一旦作成。その後、元のテーブル内データを削除(truncate)してから、移し替えるという手段が速いでしょう。
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -42,4 +42,8 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
+
あと、削除といっても、間違ってもdelete文を使わないでください。泣きを見ます。それから試す前にかならずロールバックできるようにバックアップをとっておいてください。
|
46
|
+
|
47
|
+
|
48
|
+
|
45
49
|
まあ、更に速い手段でCSVエクスポート&インポートで突っ込むという手もありますが。
|
1
複写について
test
CHANGED
@@ -20,13 +20,25 @@
|
|
20
20
|
|
21
21
|
バルクインサートとは
|
22
22
|
|
23
|
-
insert into テーブル名 values(...);
|
23
|
+
**insert into テーブル名 values(...);**
|
24
24
|
|
25
|
-
|
25
|
+
を
|
26
26
|
|
27
|
+
**insert into テーブル名 values(...),(...),n;**
|
28
|
+
|
27
|
-
という風につなげられる処理(バルクとは船荷のこと)です。船荷のようにまとめて投入できるので、実行処理が一度で済むため、長い行数だと処理は格段に速くなります。
|
29
|
+
という風につなげられる挿入処理(バルクとは船荷のこと)です。船荷のようにまとめて投入できるので、実行処理が一度で済むため、長い行数だと処理は格段に速くなります。
|
28
30
|
|
29
31
|
|
32
|
+
|
33
|
+
また、複写の手段ですが
|
34
|
+
|
35
|
+
```
|
36
|
+
|
37
|
+
insert into テーブルA select * from テーブルADASH;
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
という方法があります。全く同じ構造にしておくのがポイントで、この待避テーブルを作成するやり方はけっこう常套手段です。
|
30
42
|
|
31
43
|
|
32
44
|
|