MySQL 导入导出数据

时间:2023-03-08 17:10:17

导入数据

1. 使用 MySQl Workbench 界面操作

导入 csv JSON 格式文件

MySQL 导入导出数据

MySQL 导入导出数据

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= -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;

MySQL 导入导出数据

MySQL 导入导出数据

使用 load data 是有时会报错

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

MySQL 导入导出数据

原因是:

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

mysql> show global variables like 'local_infile';

MySQL 导入导出数据

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

MySQL 导入导出数据

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

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

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

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

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

MySQL 导入导出数据

4. 通过执行 sql 文件

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

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

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

导出数据

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

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

MySQL 导入导出数据