编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

kettle之windows mysql 表的导出文件及load data导入文件

wxchong 2024-10-26 16:26:44 开源技术 17 ℃ 0 评论

根据数据应用场景的变化,直接将数据作为SQL文件输出并不是一个特别好的选择,因为导出的文件格式不够用,例如其它系统需要使用数据的时候,就比较麻烦。因此可以采取居出文件。

1、使用使用SELECT…INTO OUTFILE导出文本文件

option:表示附加选项,如下:

into outfile – 指定导出的目录和文件名

fields terminated by – 指定字段间分隔符,即定义字段间的分隔符

optionally enclosed by – 指定字段包围符,即定义包围字段的字符,而参数optionally表示数值型字段无效,即数值类型的值不要加包围符

lines terminated by – 指定行间分隔符,即定义每行的分隔符




出现这个问题的原因是mysql的secure_file_prive这个选项没有开启,或者这个选择了特定的文件路径,只有在这个文件路径下的文件才能导入导出mysql




重启mysql;




再执行:

select * from tb_sc into OUTFILE "D:\Wnmp\mysql\data\tb_sc.txt";



报没有权限写入文件,需要把‘\’改为‘/’,即可成功!

select * from tb_sc into OUTFILE "D:/Wnmp/mysql/data/tb_sc.txt";




2、使用mysqldump命令导出文本文件

语法格式:

mysqldump -u root -ppassword -T 目标目录 dbname table [ option ];

----注意,T是大写

password:表示root用户的密码,和 -p 挨着,中间没有空格;

目标目录:指导出的文本文件的路径;

dbname:表示数据库的名称;

table:表示表的名称;

option:表示附加选项,如下:

--fields-terminated-by=字符串:设置字符串为字段的分隔符,默认值是“\t”;

--fields-enclosed-by=字符:设置字符来括上字段的值;


--fields-optionally-enclosed-by=字符:设置字符括上char、varchar、text等字符型字段;

--fields-escaped-by=字符:设置转义字符;

--lines-terminated-by=字符串:设置每行的结束符;

mysqldump -uroot -p123456 -T D:\Wnmp\mysql\data kettle_loandb tb_sc --fields-terminated-by='@' --lines-terminated-by='\r\n'


3、load data

LOAD DATA是SELECT … INTO OUTFILE的补充,要将数据从表写入文件,请使用SELECT…INTO OUTFILE。若要将文件读回表中,请使用LOAD DATA。FIELDS和LINES子句的语法对于这两个语句是相同的。

例如:

select * from tb_sc into OUTFILE "D:/Wnmp/mysql/data/tb_sc.txt" fields terminated by ',' optionally enclosed by '"' ;



要读取以逗号分隔的文件,正确的语句是:

LOAD DATA INFILE "D:/Wnmp/mysql/data/tb_sc.txt" INTO kettle_loandb tb_sc

FIELDS TERMINATED BY ',';

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表