问题:为什么要导入导出为csv文件呢?
(1)所谓大数据处理,仅仅关心某些列的数据,而非整个表结构,这些数据就需要保存为csv通用的存储格式,不仅可以在widows下作为文本文件进行处理;也可以在hadoop分布式系统上上进行处理;
(2)mysql 数据库 迁移为 Oracle 、SQLServer数据库,或者反过来,由于各自的设计不同,不能直接的导入导出为dmb sql等格式的文件,可能需要数据的导出导入为csv,而数据表结构的设计可能得通过其它途径。
一:MYSQL如何导出文本文件 (备份为csv,txt,等,更加有用)
(1):mysql 下导出为指定格式的数据的外部任意文件类型 mysql>
use dbname
Database Changed
select * from pollution into outfile ‘G:\\arcgisworkspace\\zypdoc\\text.txt‘; (指导出数据的,注意转义字符哦)
SELECT * FROM pollution INTO OUTFILE ‘G:\\arcgisworkspace\\zypdoc\\text.csv‘ FIELDS TERMINATED BY ‘\,‘; (输出格式控制)
结果为:
1,汽车尾气,200
2,建筑扬沙,180
3,汽车喷漆,160
4,燃煤,240
5,其它,80
(2) 知识补充:
一般形式:SELECT [列名称] FROM tablename [where]
INTO OUTFILE ‘目标文件路径‘ [option]
其中option参数常用的5个选项
FIELDS TERMINATED BY ‘字符串’:设置字符串为字段的分割符,默认值为 \t;
FIELDS ENCLOSED BY ‘字符’:设置字符串括上char varchar text等字符型字段,默认值为 无任何符号;
FIELDS OPTIONALLY ENCLOSED BY ‘字符’:设置字符串括上字段的值,默认值为 无任何符号;
LINES STARTING BY ‘字符串’:设置每一行开头的字符,默认值为 无任何字符;
FIELDS ESCAPED BY ‘字符’:设置转义字符,默认值为 \;
LINES TERMINATED BY ‘字符串’:设置每行结束符,默认值为 \n;
如:
SELECT * FROM pollution INTO OUTFILE 'G:\\arcgisworkspace\\zypdoc\\text2.csv' FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"' LINES STARTING BY '\>' TERMINATED BY '\r\n';
结果为:
>1,"汽车尾气","200"
>2,"建筑扬沙","180"
>3,"汽车喷漆","160"
>4,"燃煤","240"
>5,"其它","80"
(3):mysqldump 下导出为指定格式的数据的外部任意文件类型 C:\Program Files\MySQL\MySQL Server 5.5\bin>
mysqldump -u root -p -T G:\arcgisworkspace\zypdoc\ abc pollution "--fields-terminated-by=," (记住不要任何多余的空格,也不用转移字符;-p后面也不用写password;注意目
标目录是文件夹,文件名是表名,后缀是txt文件)
(4)知识补充:
mysqldump -u root -p -T 目标目录 dbname tablename [option]
option 和 上面的mysql的一样,只是更改为
"--fields-terminated-by=字符"(不要任何多余的空格,就是指fields-terminated-by紧密相连的)
二:MYSQL如何导入文本文件 (更加有用)
(1)mysql 下导出为指定格式的数据的外部任意文件类型 mysql>
第一步:创建对应字段的数据表
create table csv_test2( id int(8) primary key, name varchar(64), value int(32) );
(2)插入:加入value的类型开始时设计错了,如何更改:ALTER table csrv_test2 MODIFY column value varchar(32);
(3)第二步:导入外部数据
LOAD DATA INFILE 'D:\\tjdata_metro\\test\\mysql_infile3.csv' INTO TABLE csv_test2 FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED by'\r\n' ignore 1 lines (id,name,value);
上面的 lines terminated by ‘\r\n‘ 是 要求换行符号,为 windows的换行
上面的 ignore 1 lines是 忽略第一行的标题行。
(3) 更加详细的数据库导入导出请见:mysql 数据库导入导出方法总结(是时候总结)