在操作MySQL数据库的过程中,经常会遇到数据的导入导出的问题,结合自己在学习中遇到的一些问题和解决方法,特别对MySQL中数据的导入和导出问题做出一些总结,个人观点,难免有所欠缺,欢迎拍砖。
数据的导入问题:
1 将txt格式的数据导入到MySQL中
数据库中有如下一个表:
Create Table Test(
`ID` mediumint(8) default '0',
`Name` varchar(100) default ''
) TYPE=MyISAM;
假设txt中有如下内容
ID Name
1 Tom
2 Jerry
现在要将txt文件中的内容导入到数据表Test中,当然,首先要对txt对一定的处理,清除其中的脏数据,上面的“ID" 和 "Name"是不需要的数据,所以应该删除掉。
然后在命令行进入数据库,开始导入命令:
Load Data InFile 'C:/Data.txt' Into Table Test Fields Terminated By ',' Enclosed By '"' Escaped By '"' Lines Terminated By '\n';
表示从C盘的Data.txt文件的数据导入到数据表Test中,每个字段被逗号","分割(Terminated By ','),每一行被换行分割(Lines Terminated By '\n')
Enclosed By '"' Escaped By '"' 则表示字段的内容包含在双引号之间,一般很少用到。
当然默认的字段的分割使用制表符分割,每一行用换行分割,所以,上面的导入紧紧需要输入以下命令
load data infile "c:/Data.txt" intofile table Test;
2 导入SQL脚本
这个就很简单了,可以用可视化的工具导入脚本文件,也可以发命令还执行
mysql -uroot -p databasename<xxx.sql
3 导入Excel文件
一种方法可以把Excel文件另存为txt文件,然后按照上面导入txt文件的方法来导入数据。
另有一种方法就是借助Excel,自动生成SQL脚本,然后再导入脚本文件
假设你的表格有A、B、C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3
在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:
增加一列(假设是D列)
在第一行的D列,就是D1中输入公式:
=CONCATENATE("insert into table (col1,col2,col3) values ('",A1,"','",B1,"','",C1,"');")
此时D1已经生成了如下的sql语句:
insert into table (col1,col2,col3) values ('a','11','33');
将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)
此时D列已经生成了所有的sql语句
把D列复制到一个纯文本文件中,假设为sql.txt,然后按照导入脚本的方法导入数据。
数据导出的问题:
1 导出成txt格式
还是以上面的例子来说,假设数据库中现在已经有一定量的数据,要导出到txt文件中
可以使用下面的命令:
select * from Test into outfile 'c:/text.txt';
c:/text.txt文件不需要事先建立
2 导出成SQL 脚本
可以使用下面的命令:
mysqldump -uroot -p databasename>d:\filename.sql