首页 > 技术文章 > MySQL 导入导出数据

0820LL 2019-03-22 17:14 原文

导入数据

1. 使用 MySQl Workbench 界面操作

导入 csv JSON 格式文件

2 使用 load data 命令

load data 命令官网教程 https://dev.mysql.com/doc/refman/5.7/en/load-data.html

登录 mysql 时,需要在登录时使用 --local-infile=1 参数

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

注意1  导txt之前,应当删除字段的表头,否则表头内容也会被当做字段的值导入字段中

注意2  导入txt之前,应当将txt另存为utf-8格式,否则中文无法导入

注意3  导入txt之前,一定要将utf-8的文档去BOM头化,否则因为有前导字符串,会导入错误。

注意4  默认的行分隔符为换行符"\n"  默认的字段分隔符是tab字符"\t" 当然可以指定

$mysql --local-infile=1 -u name -p

mysql> load data local infile 'C:\\Users\\mail.simcere.com\\Desktop\\病原数据库\\standardized_microDB.check.txt'
-> into table standardized_microdb(`taxid`, `organism_name`, `species_taxid`, `gram_strain`, `disease`, `ICD_lineages`, `isolation_source`, `host_name`, `evidence_support`);

mysql> load data local infile 'C:\\Users\\mail.simcere.com\\Desktop\\病原数据库\\NCBI_taxonomy_2019-01-10.csv'
-> into table ncbi_taxonomy;

使用 load data 是有时会报错

 ERROR 1148 (42000): The used command is not allowed with this MySQL version

原因是:

服务器端 local_infile 默认开启;客户端 local_file 默认关闭,因此用时候需要打开

mysql> show global variables like 'local_infile';

mysql> set global local_infile = 'ON';  -- 权限不够使用 root

然后再使用 load data 命令导入数据

如果还是报错 可以退出MySQL 使用如下方式登录后,在使用 load data 命令

$ mysql --local-infile=1 -u root -p

3. 导入备份的数据表(由 mysqldump 得到)

$ mysql -u 用户名 -p 数据库名  < 文件名.txt

4. 通过执行 sql 文件

sql 文件本质也是文本文件,其内容就是sql语句

首先确保用户拥有足够的权限

$mysql -u root -p  -- 链接数据库
mysql> source /.../.../***.sql;  -- 执行sqla文件

导出数据

1. 使用 mysqldump 命令将数据表备份到文件中

$ mysqldump -u 用户名 -p 数据库名  数据表明 > 文件名.txt

 

推荐阅读