読者です 読者をやめる 読者になる 読者になる

LOAD DATA INFILE で項目を手動マッピングする

LOAD DATA INFILE で手動マッピングする

LOAD DATA INFILE で DBサーバローカルのファイル「@@LOAD_FILE@@」(sed -e "s?@@LOAD_FILE@@?${LOAD_FILE}?" とかで置換します)からロードする。
読み込むデータファイルの項目に変数名をつけて、DB の項目と手動でマッピングすることもできる。

実行コマンド

mysql -u ${MYSQL_USER} -p${MYSQL_PASS} -D ${MYSQL_DB} -h ${MYSQL_HOST} -e"${LOAD_SQL}"

実行するSQL ${LOAD_SQL}

SET autocommit=0;

BEGIN;

LOAD DATA INFILE "@@LOAD_FILE@@" 
IGNORE
INTO TABLE UserMaster
FIELDS 
    TERMINATED BY ',' 
    ENCLOSED BY '"' 
    ESCAPED BY '\\' 
LINES 
    STARTING BY '' 
    TERMINATED BY '\n' 
(
     @user_id
    ,@user_name
    ,@user_kana
    ,@zip_code
    ,@address1
    ,@address2
    ,@telephone
)
SET
     user_id=@user_cd
    ,user_name=@user_name
    ,zip_code=@zip_code
    ,address=concat(@address1,' ',@address2)
    ,telephone=@telephone
;

SHOW WARNINGS ;

COMMIT;