#はじめに
講義のときの説明が不十分だったので、こちらにまとめてみました。
問題
目的は下のように、VALUEの値に適切に入れる形にデータを整えることです。
INSERT INTO `db_2021`.`profile`(`birth_month`, `hobbies`, `fav_veges`, `prefer_bread`)
VALUES ('9','ゲーム','なす','1');
つまり要件は
- それぞれの値が''(シングルクォーテーション)で囲まれている。
- 値と値の間に,(カンマ)が打たれている
ですね。
##csvからエクセルに貼り付ける
csvの表データを全部コピーしてエクセルに貼り付けたものがこちらです。(個人が特定できそうな情報は非表示にしてあります)
1列目をこのままsqlファイルに貼り付けても、
9月 ゲーム なす 1
となり、上で設定した要件を満たしていません。
なので、まず(要件1)値をシングルクオーテーションで囲ってみます。
まず、上のように下のセルに
="'"&D2&"'"
と入力してください。意味は「'」、「D2の値」、「'」の順に表示してねという意味です。
「'」はそのまま入力すると意味のある記号としてエラーになるので、"で囲っています。&は「繋ぐ」の意です。
これをすべてのデータが見えるようになるまでオートフィルで広げます。
まず横に広げて
次に縦に広げます。
すると、すべてのセルの値が ' でくくられました!
要件1達成です!
##要件2
次に値と値の間に , が欲しいです。そのために
「2つ目以降の値の先頭( ' の前)に , があればいい」
と考えます。
そのために
="'"&E2&"'"
から
=",'"&E2&"'"
に書き換えましょう!
そこで先ほどと同じようにオートフィルで広げると
少し見えづらいですが、各値の間に , を入れることができました。要件2達成です!
##sqlファイルに反映してみる
先ほどできたデータから1行もってきて、
INSERT INTO `db_2021`.`profile`(`birth_month`, `hobbies`, `fav_veges`, `prefer_bread`)
VALUES ();
のVALUEの()の中に入れてみます。
INSERT INTO `db_2021`.`profile`(`birth_month`, `hobbies`, `fav_veges`, `prefer_bread`)
VALUES ('9','ゲーム','なす','1');
うまく入りましたでしょうか。これでおしまいです。
#さいごに
今回はcsvファイルから手動でデータベースに挿入するする手順を紹介しましたが、
おそらく、csvファイルからテーブルを効率よく作成する方法があると思うので、
今回のやり方が仕事で生きることはないかもしれません。
ですが、皆さんの興味を満たせたのであれば、私もまとめた甲斐がありあます。
それでは。