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