最近别人在给我 sql 文件时简单的提了下 导入/导出 命令,在此基础上学习了下,总结到 myhere。
规定:
用户名:db_user
帐号: db_pass
数据库: db_name
表: table_name_1, table_name_2
说明: 一些操作需要有适当的权限。
1. 导出
mysqldump -udb_name -pdb_pass db_name > db_name.bak.sql
// 导出整个数据库 db_name
// 文件默认保存在执行 mysql 命令的目录
mysqldump -udb_name -pdb_pass db_name table_name_1 > db_bame-table_name_1.bak.sql
// 导出数据库 db_name 中表 table_name_1
// 文件默认保存在执行 mysql 命令的目录
// 说明:导出的文件是含有建表语句的。
2. 导入
mysql -udb_name -pdb_pass db_name < table_name_1.bak.sql
// 导入表到数据库 db_name
// 在没有连接数据的时候导入
// 文件默认在执行 mysql 命令的目录
source table_name_1.bak.sql
// 已经连接好数据库服务器,并且选择了数据库 use db_name
// 文件默认在执行 mysql 命令的目录
// 说明: 导入的文件需是含有见表语句的。
3. select...into outfile select * from table_name_1 limit 20 into outfile 'db_name-table_name_1.bak.sql'
// 文件默认导出到服务器数据库 db_name 所在目录
select * from table_name_2 into outfile 'F:/db_name-table_name_1.bak2.sql'
// 导出到 F 目录下
// 说明:
// * 这种方式导出的只有数据,是表中的一行一行的数据
// * 文件名必须用引号引起来
4. load data infile...from load data infile 'db_name-table_name_1.bak.sql' into table table_name_1
// 导入数据到 db_name 中表 table_name_1
// 需先选中 db_name,
// 默认 db_name-table_name_1.bak.sql 放在服务器数据库 db_name 目录下
load data infile 'F:/db_name-table_name_1.bak2.sql' into table table_name_1
//
load data local infile 'F:/db_name-table_name_1.bak.sql' into table table_name_1
// 加 local,文件先被客户主机上的客户端读取,然后发到服务器
// 因此使用 local 速度会稍慢