0
1

More than 3 years have passed since last update.

表(csv)データをエクセルでINSERTしやすい形にする

Posted at

はじめに

講義のときの説明が不十分だったので、こちらにまとめてみました。

問題

目的は下のように、VALUEの値に適切に入れる形にデータを整えることです。

INSERT INTO `db_2021`.`profile`(`birth_month`, `hobbies`, `fav_veges`, `prefer_bread`) 
VALUES ('9','ゲーム','なす','1');

つまり要件は
1. それぞれの値が''(シングルクォーテーション)で囲まれている。
2. 値と値の間に,(カンマ)が打たれている
ですね。

csvからエクセルに貼り付ける

csvの表データを全部コピーしてエクセルに貼り付けたものがこちらです。(個人が特定できそうな情報は非表示にしてあります)
image.png

1列目をこのままsqlファイルに貼り付けても、

9    ゲーム   なす  1

となり、上で設定した要件を満たしていません。
なので、まず(要件1)値をシングルクオーテーションで囲ってみます。

要件1

image.png

まず、上のように下のセルに

="'"&D2&"'"

と入力してください。意味は「'」、「D2の値」、「'」の順に表示してねという意味です。
「'」はそのまま入力すると意味のある記号としてエラーになるので、"で囲っています。&は「繋ぐ」の意です。

これをすべてのデータが見えるようになるまでオートフィルで広げます。
まず横に広げて

image.png

次に縦に広げます。

image.png

すると、すべてのセルの値が ' でくくられました!

image.png

要件1達成です!

要件2

次に値と値の間に , が欲しいです。そのために

「2つ目以降の値の先頭( ' の前)に , があればいい」

と考えます。
そのために

image.png
ここの値を

="'"&E2&"'"

から

=",'"&E2&"'"

に書き換えましょう!
そこで先ほどと同じようにオートフィルで広げると

image.png

少し見えづらいですが、各値の間に , を入れることができました。要件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ファイルからテーブルを効率よく作成する方法があると思うので、
今回のやり方が仕事で生きることはないかもしれません。
ですが、皆さんの興味を満たせたのであれば、私もまとめた甲斐がありあます。
それでは。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1