OracleのSQLLoaderに相当する操作をMySQLで行います。

0.前提

CSV形式の投入データが存在する。

投入先のテーブルが作成されている。

 

1.CSVデータ投入方法

customer.csvをcustomerというテーブルに投入している。

デフォルトでは/var/lib/mysql/<database name> の場所にあるファイルを開こうとする。

そのため、他の場所に置いているファイルを投入するときは、フルパスで指定すること。

例) /home/foo/customer.csv

 

FIELDS TERMINATED BY ‘,’ はCSVをロードするとき必須。デフォルトはTSV(タブ区切り)。

 

2.その他のTips

  • IGNORE 1 LINES : 1行目にヘッダー(カラム名)が入っている場合に除外できる。 複数行のヘッダがある場合は1を任意の数に変更する。
  • 主キーのIDも必ず必要。auto_incrementしていたとしても列は必要となるが、値が入っていないくても良い。
  • ENCLOSED BY ‘”‘ : ダブルクォーテーションで囲まれていたら、囲み文字の指定をする。

 

より複雑な形式のデータを扱う場合は、元のデータを@付変数、投入先のカラムをカラム名で指定することができる。

ここでは、普通のSQLのようにIF文やCAST(str_to_date)を書くことができる。

 

3.警告が出たら?

SHOW WARNINGS; で確認できるので、エラーメッセージを見て対応する。

Data truncated for column ‘XXXX’ とあったら、XXXXでデータがテーブル定義をオーバーしている。

 

Leave a Reply

Your email address will not be published. Required fields are marked *