MySQL LOAD DATA常用用法

 一般想要文件灌入数据库会用LOAD DATA语句,这里提供一个比较common的用法,导入文件内容到数据库,分为两个步骤:

1. 导入数据到备份表_bak,这样可以保证load大数据量时万一有错误,原表仍然不受影响 

2. 重命名表 原表名-> _tmp, _bak -> 原表名, _tmp -> _bak,相当于做了一次交换。

具体SQL参考如下:

步骤1:

${MYSQL_CLIENT} -u"${BEIDOU_DB_USER_SITEURL}" -p"${BEIDOU_DB_PASSWORD_SITEURL}" -h"${BEIDOU_DB_IP_SITEURL}" -P"${BEIDOU_DB_PORT_SITEURL}" –default-character-set=utf8 -e "

use beidouurl;

drop table if exists ${BLACKLIST_TABLE}_bak;

create table ${BLACKLIST_TABLE}_bak like ${BLACKLIST_TABLE};

load data local infile ‘${VISITOR_BLACKLIST_DATA_PATH}/${BLACKLIST_FILE}’ into table ${BLACKLIST_TABLE}_bak CHARACTER SET gbk (${BLACKLIST_TABLE_COLUMN});

"  1>> ${LOG_FILE} 2>>${LOG_FILE}.wf

步骤2:

${MYSQL_CLIENT} -u"${BEIDOU_DB_USER_SITEURL}" -p"${BEIDOU_DB_PASSWORD_SITEURL}" -h"${BEIDOU_DB_IP_SITEURL}" -P"${BEIDOU_DB_PORT_SITEURL}" –default-character-set=utf8 -e "

use beidouurl;

rename table ${BLACKLIST_TABLE} to ${BLACKLIST_TABLE}_tmp,

${BLACKLIST_TABLE}_bak to ${BLACKLIST_TABLE},

${BLACKLIST_TABLE}_tmp to ${BLACKLIST_TABLE}_bak;

"  1>> ${LOG_FILE} 2>>${LOG_FILE}.wf

 

附:LOAD DATA格式

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name’

    [REPLACE | IGNORE]

    INTO TABLE tbl_name

    [CHARACTER SET charset_name]

    [{FIELDS | COLUMNS}

        [TERMINATED BY ‘string’]

        [[OPTIONALLY] ENCLOSED BY ‘char’]

        [ESCAPED BY ‘char’]

    ]

    [LINES

        [STARTING BY ‘string’]

        [TERMINATED BY ‘string’]

    ]

    [IGNORE number LINES]

    [(col_name_or_user_var,…)]

    [SET col_name = expr,…]

Leave a Comment.