MySQLにテキストデータを読み込む
以前にもやったのだが、おぼろげにしか覚えてなかったのであらためて記録。Rails プログラムを修正するにあたってデータベースのテーブル定義を修正することにした。フィールドの順序を一部入れ替えることにしたのだけれど、すでに 300 弱のデータを入力してあるのでそれをそのままなんとか移したいと。以下、手順。
- MySQL Administrator でバックアップを取る。
- バックアップデータから純粋にデータ部分だけを抜き出す。
- エクセルでフィールドの並べ替えをする。
- タブ区切りテキストで出力。
- 一部のデータを置換などして取り込める形に修正。
- データベースを作り直す。
- MySQL Command Line Client でデータを読み込む。
タブ区切りテキストの形式は、
(レコード番号)(タブ)(フィールド1データ)(タブ)(フィールド2データ)1 123 456 あ
といった感じで。先頭のレコード番号そのものはなくてもよいがタブは必要なので目安にいれておくと先頭のタブが自然な感じに理解できるかもしれない。
バックアップデータでは文字列は " で囲まれているのでこれは外す。NULL となっている部分は \N に置換する。
データベースへの取り込み手順は、
--local-infile=1
を入力したあとで、
load data local infile '読み込むデータファイル名(必要ならフルパスで)' into table データベース名.テーブル名;
パスの区切りは / で( c:/data/text.tsv など)。仮にデータベース名が test_development で、テーブル名が items であったら、test_development.items とする。行末の ; も忘れずに。
| 固定リンク
コメント