日常开发中,经常会涉及到对于数据库中数据的导入与导出操作,格式也有很多: TXT,CSV,XLS,SQL等格式,所以,在此总结一下,省的总是百度查询.
一 导出
1) 常用的方式就是使用现成的工具例如: Navicat 或者phpmyadmin 当然这是在Windows下经常使用到的工具,如果是Mac当然也有比较好用的软件进行数据导出
Navicat: 选择要导出的表/库 -> 导出向导->选择导出的格式 即可
phpmyadmin: 选择表/库 -> 导出 -> 选择导出的格式即可
有些情况导入的时候报数据错误,可以使用这种方式进行尝试解决:
xls > 将xls文件另存为CSV格式 -> 打开CSV格式文件,另存为TXT格式,保存的时候使用utf8编码 -> 删除xls和CSV格式的文件 -> 将TXT文件后缀改成CSV格式 -> 使用工具进行导入(Navicat || phpadmin)
2) 命令导出 (如果是在linux中操作的话,使用命令的导出方式是最常用的了)
//导出完整数据:
mysqldump -u用户名 -p密码 库名 [表名] > 保存的文件名称
mysqldump -uroot -proot a user > user.sql(C:UsersAdministratorDesktopuser.sql)
//导出数据表结构:
mysqldump -u用户名 -p密码 -d 库名 表名 > 保存的文件名称
mysqldump -u用户名 -p密码 --no-data --databases d1 > 文件名
//导出数据表中数据:
mysqldump -u用户名 -p密码 -t 库名 表名 > 保存的文件名
//导出所有数据库中(包含系统数据库)的数据库
mysqldump -u用户名 -p密码 --all-databases >保存的文件名
//导出d1,d2两个数据库中的所有数据
mysqldump -u用户名 -p密码 --databases d1 d2 > 保存的文件名
//导出d1中的a1,a2表
mysqldump -u用户名 -p密码 --databases d1 --tables a1 a2 > 保存的文件名
//导出d1库 a1表中id=1的数据
mysqldump -u用户名 -p密码 --databases d1 --tables a1 --where='id=1' > 保存的文件名
//跨服务器导出导入数据
mysqldump --host=h1 -uroot -proot db1 |mysql --host=h2 -uroot -proot db2(可以指定不同数据库)
//将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错(使用这种方式必须是相同的库名才可以)
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test
//-C 进行传输压缩 //--single-transaction 保证备份的一致性(工作原理是设定本次会话的隔离级别为:REPEATABLE READ,以确保本次会话(dump)时,不会看到其他会话已经提交了的数据)
//压缩备份 mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz //还原 gunzip -c abc.sql.gz |mysql -uroot -proot abc
//常用参数:
//生成新的binlog文件 -F参数 mysqldump -u用户 -p密码 --all-databases -l -F > all_databases.sql
注意点:
--databases: 如果使用这个参数默认会SQL语句中加入创建库,use库语句
使用mysql自带的命令执行操作
/usr/bin/mysql --default-character-set=utf8 --socket=/data/mysql/mysql.sock -u用户名 -p密码 -e " select email,score from gwent.cm_survey " > gwent.xlsm //在数据库进入之前执行命令 select * from user into outfile 'C:/Users/Administrator/user.xls'; //在数据库中执行命令
二 导入
1) 使用相应的软件导入方法, 操作步骤同上
2) 使用命令行的方式
use database;
source E:xampphtdocsSsCpcdjm.sql
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql