今日は業務終了後間髪入れずにワインを飲んだので作業はしないつもりだったんですが、
たまたまOracleDBいじってみたら全く上手くいかず。
気がついたら頭の中のアルコールの爽快感が消え失せてたので作業しようと思います。
ご存知でしたか?ワインボトルを横にして保管するのはコルクを湿らせて空けやすくする為らしいですよ。このご時世、私の月給でコルクで締められたワインを飲むことなんて年に1回あるかないかじゃーい
さて、昨日の#1ではSQL serverをインストールしてcsvをインポートするためのテーブルを作りました。
何を隠そうこのブログは作業した内容をまとめるのではなく作業と並行して書いてるのでどこまでやるかを書いてる段階で書いていないしこの後どのぐらいの工程が発生するかも分かっていません。遊びだから許される。遊びでも許されないレベルな気がするけど。
では、とりあえずcsvをインポートしてみたいと思います。
ちょっと攻略サイトは読まずにいけるとこまでやってみます。
こんなメニューがあるから初見クリア余裕な気がします。
あ、これ違うやつだわ
しかもウィンドゥに名前を付けて保存って書いてたし
おとなしくググります。
どうやらDBから直接やるみたい。
紹介されてるインポートフラットファイルは新規のテーブルを作るということで、
私の昨日の作業を灰燼に帰す所業のようなので使いません。
その下にあったデータインポートのメニューからcsvを参照させていきます。
おお、いい感じ。こういうの、こういうのこういうの
で、次
いや、結局こっちも新規テーブル作るんかい。
csv入れるたびに新規テーブル作られちゃ困るので
ちゃんとやり方をググることにします。
一度耳にしたことのあるバルクインサートを使うらしい。
これはいいですね。関数化して日付引数で渡して月ごとに取り込めるようにしてみたいですね。
一旦そういう自動化はおいといて手動で取り込んでみます。
Foo
なかなか簡単にはいかない。
完全にデータ型っぽいエラーですね・・・どうして・・・
わたわたしてカラム定義変更したら削除 > 再作成しろってメッセージがでて
テキストファイル保存させてくれました。
CREATE文だと勝手に解釈して削除しました。
開いたテキストファイルがこちらです。
頭おかしくなりそう。
とりあえず昨日の作業の半分ぐらいが消し飛びました。
もうcsvインポートする時にテーブル作ってしまうか思いましたが
維持で初回インポートはバルクインサートでいきたいと思います。
なので、テーブルを再作成しました。
intで入りませんでした。
また再作成は嫌なのでググりました。
この再作成を必要~が不要みたいです。
はいALTER TABLEですよ。
全てVARCHARにしました。
これでインポートができるかまずテストです。
余裕で入りました。
なんかムカつくな。
インポート結果を見てみましょう。
ただ、ここでなんとなくこれまでの作業で嫌な予感してたのが的中していました。
「"」がデータになっちゃってるんですよね。
bit型でエラー吐くのが釈然としていなかったので
これで腑に落ちました。
(え?1日に何回コンビニ行ってんだこいつ)
これDLしたファイルに何も加工していないので、
どうにか対応したい。
・"を無視してインポートさせる方法を見つける
・Excelをデータソースにすることもできるようなので、
何かしらExcelをワンクッション踏ませる。
ちょっと後ろはあまり取りたくないですね。
それやるならそもそもDB使う必要も無い気もするので
ちなみにさっきからググるたびに予測候補の真上に
ググりたいワード
sql server bulk insert csv
sql server bulk insert csv ダブルクォーテーション
が出てきてじわじわ来ます。
FORMAT = 'CSV' 指定すればそれだけでいけるよ。
みたいな記事も引っかかるんですが7301エラーがでます。
7301エラーは改行文字っぽいので結局
オプション盛々で実行してみたところ
うまくいきました。
とりあえず1年分のcsvちゃちゃっと入れてしまいますか。
大活躍したSQL
完全にコピペソースでした。
本当にネットの民助かります。
BULK INSERT テーブル名
FROM 'ファイルフルパス'
WITH (FORMAT = 'CSV'
,ROWTERMINATOR = '0x0A' --改行コード(LF)
,FIRSTROW = 2 --先頭行は「カラム名」なのでデータは2行目から
,KEEPNULLS --NULL値を保つ
)
今日はここまでにします。
もうちょい先行くかと思ったんですけどCSV入れるだけで2H...
先が...先が長そうだ....
adieu.
本日の作業BGM:
いや、D4DJやばいですね。
生活が日に日にブシロードに支配されている。
Comments