回答編集履歴

1

追記

2017/12/28 02:26

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -21,3 +21,99 @@
21
21
  相手の環境でまるっと再現出来なければなんの意味もないので、本番環境への反映と同じですね。
22
22
 
23
23
  Dockerやdocker-composeを使うのが今風です。
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ 【追記】SQLでデータを持ち運ぶ?
32
+
33
+
34
+
35
+ これを説明する為にはRDBMSの概要をさらっと説明する必要があります。
36
+
37
+ 想像しやすいようにExcelで表現すると、
38
+
39
+ RDBMSのデータベースに当たるのがExcelの1ファイルに該当します。
40
+
41
+ これと同じように、テーブルがExcelのシート、レコードがExcelの1行に該当します。
42
+
43
+
44
+
45
+ SQLとはRDBMSの操作をお願いする呪文です。
46
+
47
+ 例えば`SELECT * FROM table_name`とお願いすれば、
48
+
49
+ RDBMSはtable_nameというテーブル名から全てのデータを探して一覧にして返してくれます。
50
+
51
+ また、`INSERT INTO table_name (value1, value2, value3 ...)`とお願いすれば、
52
+
53
+ RDBMSはtable_nameというテーブルにSQL文に従って作られた1行のデータを挿入してくれます。
54
+
55
+
56
+
57
+ このようにRDBMSはSQLという文字列で全ての操作を外部から行うわけですね。
58
+
59
+ Excelで表形式の一覧を作るには、Excelファイルを作る→シートを作って表組みを整える→1行追加という手順になりますが、
60
+
61
+ RDBMSではSQL文を順番通りに次々と読み込ませる事で実現します
62
+
63
+ (今回はMySQL用のSQL文なので他のDBでは方言の違いがあります、実際にはリファレンス等を読んでください)
64
+
65
+
66
+
67
+ ```SQL
68
+
69
+ -- 先頭が--の行はコメントアウト
70
+
71
+ -- データベースを作成する
72
+
73
+ CREATE DATABASE new_app;
74
+
75
+
76
+
77
+ -- テーブルを作成する
78
+
79
+ CREATE TABLE new_app.users (id int, name varchar(20));
80
+
81
+
82
+
83
+ -- 行を追加
84
+
85
+ INSERT INTO new_app.users (id, name) VALUES (1, 'taro');
86
+
87
+ INSERT INTO new_app.users (id, name) VALUES (2, 'jiro');
88
+
89
+
90
+
91
+ -- MySQLではバルクインサートという手法を使って複数行のデータを1文で追加できます、他のDBでも多分可能
92
+
93
+ INSERT INTO new_app.users (id, name) VALUES (3, 'saburo'), (4, 'shiro'), (5, 'goro');
94
+
95
+ ```
96
+
97
+
98
+
99
+ 本題の持ち運ぶとは何か?ですが、登録用の操作系SQL文を集めて1ファイルに固めます。
100
+
101
+
102
+
103
+ ```SQL
104
+
105
+ CREATE DATABASE new_app;
106
+
107
+ CREATE TABLE new_app.users (id int, name varchar(20));
108
+
109
+ INSERT INTO new_app.users (id, name) VALUES (1, 'taro'), (2, 'jiro'), (3, 'saburo'), (4, 'shiro'), (5, 'goro');
110
+
111
+ ```
112
+
113
+
114
+
115
+ これを先方に渡して実行すれば、一瞬でテーブルとデータが再現出来ます。
116
+
117
+ MySQLはmysqldump、Oracleではエクスポートという機能があり、
118
+
119
+ こういったSQL文の詰まったファイルを稼働中のRDBMSに作らせる事が可能です。