MySQL 导入导出数据
导入数据
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