DBを使うシステムを作って知り合いにレビューしてもらうことになったのですが、
ということは膨大なユーザーデータが含まれているわけではないのですよね。
データ格納用のSQLファイルに固めて転送という手段が使えます。
そもそも開発環境のみで動作させるわけではなく、
いずれは本番環境へ適用(デプロイ)して使うわけですから、それと同じで簡単に設定情報を持ち運ぶ手段が必要になりますので、SQLファイルを利用するというのは良い手段です。
相手の環境ですぐ実行することができる方法はありますか?
相手の環境でまるっと再現出来なければなんの意味もないので、本番環境への反映と同じですね。
Dockerやdocker-composeを使うのが今風です。
【追記】SQLでデータを持ち運ぶ?
これを説明する為にはRDBMSの概要をさらっと説明する必要があります。
想像しやすいようにExcelで表現すると、
RDBMSのデータベースに当たるのがExcelの1ファイルに該当します。
これと同じように、テーブルがExcelのシート、レコードがExcelの1行に該当します。
SQLとはRDBMSの操作をお願いする呪文です。
例えばSELECT * FROM table_name
とお願いすれば、
RDBMSはtable_nameというテーブル名から全てのデータを探して一覧にして返してくれます。
また、INSERT INTO table_name (value1, value2, value3 ...)
とお願いすれば、
RDBMSはtable_nameというテーブルにSQL文に従って作られた1行のデータを挿入してくれます。
このようにRDBMSはSQLという文字列で全ての操作を外部から行うわけですね。
Excelで表形式の一覧を作るには、Excelファイルを作る→シートを作って表組みを整える→1行追加という手順になりますが、
RDBMSではSQL文を順番通りに次々と読み込ませる事で実現します
(今回はMySQL用のSQL文なので他のDBでは方言の違いがあります、実際にはリファレンス等を読んでください)
SQL
1-- 先頭が--の行はコメントアウト
2-- データベースを作成する
3CREATE DATABASE new_app;
4
5-- テーブルを作成する
6CREATE TABLE new_app.users (id int, name varchar(20));
7
8-- 行を追加
9INSERT INTO new_app.users (id, name) VALUES (1, 'taro');
10INSERT INTO new_app.users (id, name) VALUES (2, 'jiro');
11
12-- MySQLではバルクインサートという手法を使って複数行のデータを1文で追加できます、他のDBでも多分可能
13INSERT INTO new_app.users (id, name) VALUES (3, 'saburo'), (4, 'shiro'), (5, 'goro');
本題の持ち運ぶとは何か?ですが、登録用の操作系SQL文を集めて1ファイルに固めます。
SQL
1CREATE DATABASE new_app;
2CREATE TABLE new_app.users (id int, name varchar(20));
3INSERT INTO new_app.users (id, name) VALUES (1, 'taro'), (2, 'jiro'), (3, 'saburo'), (4, 'shiro'), (5, 'goro');
これを先方に渡して実行すれば、一瞬でテーブルとデータが再現出来ます。
MySQLはmysqldump、Oracleではエクスポートという機能があり、
こういったSQL文の詰まったファイルを稼働中のRDBMSに作らせる事が可能です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。