Search

  毎日にもっと楽~を! BLOG Tokyo

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付属の設定ウィザードで、定義するのもよい。




Bookmark and Share


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

comments

comment form

(BLOG Tokyo にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form