【MySQL】使用Load加载数据

来源:互联网 发布:皇室战争毒药数据 编辑:程序博客网 时间:2024/05/20 19:31

使用load加载有格式规律的数据相对于SQL语句效率更高,命令格式如下

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_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 | ROWS}]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]

这里使用网上某网站泄露数据作为测试对象,数据格式为

user1 # password1 # mail1@test.com

user2 # password2 # mail2@test.com

......


mysql> load data infile '/home/wwwroot/pdo/data.txt' into table users fields terminated by ' # ' Lines Terminated By '\r\n';
Query OK, 6428543 rows affected (50.47 sec)
Records: 6428543  Deleted: 0  Skipped: 0  Warnings: 0

fields terminated by ' # ' 表示用' # '作为数据的分隔符
Lines Terminated By '\r\n' 表示一条数据行分隔符


测试结果如上所示,642W数据仅用了50多秒(非SSD)就完全载入到数据库中,效率完爆insert


=============================================================

至于如何导出固定格式的数据文件,参考手册可使用如下命令

[root@localhost data]# /usr/local/mysql/bin/mysqldump -uroot -proot mydb --tab=/home/wwwroot/data/ --fields-terminated-by=',' --lines-terminated-by='\r\n';

Warning: Using a password on the command line interface can be insecure.

--tab=dir_name 表示导出文件的目录,该命令要求目录的写权限

命令执行结束会在导出路径下生成两个文件,一个是建表语句,另一个是数据文本







0 0