質問: 現在制作しているWebAppにて、環境構築でDBの初期導入時 Windowsバッチファイルで、SQL文を実行してDBにデータ導入を行っています。 現在テーブルにINSERTするデータを、「英語版」「日本語版」でそれぞれ分けています。 バッチファイルを実行すると、「英語」または、「日本語」のデータ導入を行うSQL文が決まり実行されるようになっています。 <参照:> ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/f4037a7ba2c76950bbe2ebe5e11d6bdc.png) 今現在、日本語と英語それぞれで導入するデータを変えているのですが 下記に様に基本的に同じデータの言語によって変わる部分だけが違うイメージです。 ``` //日本語用のSQL INSERT INTO table VALUES (1,'こんにちは','2020-01-01'); INSERT INTO table VALUES (2,'こんばんは','2020-01-02'); //英語用のSQL INSERT INTO table VALUES (1,'Hello','2020-01-01'); INSERT INTO table VALUES (2,'Good evening','2020-01-02'); ``` 今後、初期導入時のデータを増やした際や、言語が増えた際に 言語の数×増やしたいデータ のINSERT文を書いていくのが大変なので、何とかしてINSERT文は一つにしたいのですが うまいやり方が思いつきません。 一応現状の案としては、 INSERT文に「ID」のようなものを登録します。 ``` //SQL INSERT INTO table VALUES (1,'ID001','2020-01-01'); INSERT INTO table VALUES (2,'ID002','2020-01-02'); ``` このID(上記でいう「ID001」)などを変換する。 ※IDリストのようなファイルを作る処理は別途作成。 私の中では以下の二つのやり方を思いついているのですが、 1バッチを起動した際にINSERT文のID部分を、IDリストファイルと照合して置換する処理を作成する。 2一度データを(IDが入っているもの)INSERTする。その後UPDATEを実行してIDを言語ごとの言葉に置き換え →UPDATE文作成の処理は別途作成 実際どうやって実現していくかは全く分かっていません。 ざっくりした質問で大変申し訳ないのですが、 私の案を実現するために良い方法はありますでしょうか? またほかにもっと良いやり方を思いつく方がいたら教えていただきたいです。
回答: > > 今後、初期導入時のデータを増やした際や、言語が増えた際に言語の数×増やしたいデータ > > のINSERT文を書いていくのが大変なので、 > > > 例えば以下の様な情報があったとして、 ``` //日本語用のデータ 1,'こんにちは','2020-01-01' 2,'こんばんは','2020-01-02' //英語用のデータ 1,'Hello','2020-01-01' 2,'Good evening','2020-01-02' ``` insert文とそのデータは兼用しているのなら、単にデータにinsert命令が固定で付加されているのと同じです。 insert文として管理するのが嫌なら上記のデータをそれぞれのCSVなどにしてインポートすれば良いのでは。