2007年3月 2日
【MySQL】データのインポート
MySQLで他のファイル(csvファイルとか)からインポートする場合、下記の4つのパターンがある。(もっとあるかも知れないが。。)
1.ACCESSのODBCを使う。
2.MYSQLクライアント(コマンドプロンプトで)LOAD DATA (LOCAL) INFILEコマンドを使う。
3.MYSQLIMPORTを使う。
4.ファイルに記述されたINSERT構文を実行する
mysqlimportは、文字コードの指定が効かないなど、あんまりいい思いをしていないので、LOAD DATA INFILEでの成功設定事例を掲載する。
MySQLクライアントから実行。権限はInsert以上でよい。mysql> LOAD DATA LOCAL INFILE 'C:/tbl_ryohi_master.txt'
-> INTO TABLE tbl_ryohi_master
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n'
-> (flag,flagFaculty,dateEntry,dateReceive,
-> datePost_calc,dateGet_calc,dateApprove,
-> dateSbm,dateComplete,dateReceipt,flagReceipt,
-> dateReport,flagReport,
-> countryName,note,modify,cancel,
-> dt01_year,dt01_id_cd,dt01_no,dt01_voucher,
-> dt01_start,dt01_end);
LOAD DATA LOCAL->ロード元ファイルがクライアント側にある場合「LOCAL」をつける。
INTO TABLE テーブル名->ロード先(インポートしたい)テーブル名を指定。「DB名.テーブル名」でも指定可能。
FIELDS TERMINATED BY->ロード元ファイル内の列の区切りが何か。今回は「,」(カンマ)。既定はタブ。
ENCLOSED BY '\r\n'->Windowsでは「\r\n」を指定。(CR+LF)
括弧の中は列名を指定する。ロード元ファイルの列が順次インポートされていくので、ロード先テーブルと列定義の順番が違う場合は、ここで指定する必要がある。
(文字コード)
データベースの文字コードとロード元ファイルの文字コードが同一である必要がある。
mysql>Status;
で確認。
mysql>SET character_set_database=cp932;
で指定することもできるし、MySQL5.0付属の設定ウィザードで、定義するのもよい。
- by editor
- at 13:16

編集長のおすすめの一冊!2010
comments