0、概述 Mysql数据的导入导出方案通常是配套的,例如: 方案一:使用mysqldump导出数据,再使用mysql客户端导入数据 方案二:使用SELECT INTO OUTFILE命令导出数据,再使用LOAD DATA或
Mysql数据的导入导出方案通常是配套的,例如:
方案一:使用mysqldump导出数据,再使用mysql客户端导入数据
方案二:使用SELECT INTO OUTFILE命令导出数据,再使用LOAD DATA或mysqlimport导入数据
方案三:使用mysql程序的批处理模式导出数据,再使用LOAD DATA或mysqlimport导入数据
# 语法mysqldump db_name --tables tb1_name tb2_name > filemname.sql# 实例mysqldump mytest --tables t1 t2 > t1_t2.sql
# 语法mysqldump db_name --tab=dir# 实例mysqldump mytest1 --tab=/home/mysql/__test
以下导出时,数据值以逗号分隔
mysqldump mytest1 --tab=/home/mysql/__test --fields-terminated-by=','
参数说明如下:
mysqldump --complete-insert --force --add-drop-database --insert-ignore --hex-blob --databases mytest > mytest_db.sql
mysqldump --all-databases --add-drop-database > db.sql
mysqldump --xml mytest1 > /tmp/mytest1.xml
导出时可以选择忽略哪些表,即不导出哪些表,只需加上参数–ignore-table=db_name.tbl_name1、–ignore-table=db_name.tbl_name2。
mysqldump --databases=mytest,mytest1 --ignore-table=mytest.tb1,mytest1.tb2
mysqldump不支持直接利用通配符导出多个表,但可以先用SELECT加通配符查询要导出的多张表的表名,将表名写到文件中,然后再用mysqldump读出表名再导出这些表。
# 1. 获得表名,写入文件mysql -N information_schema -e "select table_name from tables where table_name like 'prefix_%' " > tbs.txt# 2. 读取包含表名的文件,导出表mysqldump db 'cat tbs.txt' > dump.sql
mysql db_name < db_name.sql
# 语法mysql --default-character-set=charset_name database_name < import_table.sql # 示例mysql --default-character-set=gbk < import_table.sql
SELECT * INTO OUTFILE '/tmp/testfile.txt' FROM t1;SELECT * INTO OUTFILE '/tmp/t1.txt' FIELDS TERMINATED BY ':' OPTIONALLY ENCLOSED BY '+' ESCAPED BY '!' FROM t1;
mysql> load data infile '/tmp/t2.txt' into table t2;
# 生成csv文件mysql> select field_list from table_name into outfile '/home/garychen/tmp/table_name_2.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';# 导入文件mysql> load data local infile '/home/garychen/tmp/table_name_2.csv' into table table_name fields terminated by ',' lines terminated by '\n'(field1,field2,field3);
# 语法mysqlimport databasename tablename.txt# 实例mysqlimport mytest /tmp/t2.txt
使用mysql程序的批处理模式,支持比较灵活的导出数据,因为可以利用SQL语句。
# 方式一,-e选项mysql --batch --default-character-set=utf8 -e "SELECT * FROM t2;" mytest > t2.txt# 方式二,--executemysql --batch --default-character-set=utf8 "--execute=SELECT * FROM t2;" mytest > t3.txt
mysql --batch --default-character-set=utf8 --vertical -e "SELECT * FROM t2;" mytest > t2.txt
mysql --batch --default-character-set=utf8 --html -e "SELECT * FROM t2;" mytest > t2.txt
mysql --batch --default-character-set=utf8 --xml -e "SELECT * FROM t2;" mytest > t2.txt
split [OPTION] [INPUT [PREFIX]]
split -l 10000 /tmp/t1.txt t1_split_sub_
MySQL导出导入数据(即数据转储)主要有以下三种方式:
注:设置MYSQL数据导出与导入,secure_file_priv参数设置
通过show variables like ‘%secure_file_priv%’;
secure_file_priv参数说明
这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT … INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限。
secure_file_priv=null 不允许导入导出
secure_file_priv=具体文件路径 只允许从这个路径导入导出
secure_file_priv=空 可以从任意路径导入导出。
此时修改secure_file_priv的参数只需要修改mysql
来源地址:https://blog.csdn.net/eagle89/article/details/132501069
--结束END--
本文标题: MySQL数据的导入导出mysqldump、mysqlimport into outfile和load data
本文链接: https://www.lsjlt.com/news/442191.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0