天天看點

kettle之windows mysql 表的導出檔案及load data導入檔案

作者:Attending

根據資料應用場景的變化,直接将資料作為SQL檔案輸出并不是一個特别好的選擇,因為導出的檔案格式不夠用,例如其它系統需要使用資料的時候,就比較麻煩。是以可以采取居出檔案。

1、使用使用SELECT…INTO OUTFILE導出文本檔案

option:表示附加選項,如下:

into outfile – 指定導出的目錄和檔案名

fields terminated by – 指定字段間分隔符,即定義字段間的分隔符

optionally enclosed by – 指定字段包圍符,即定義包圍字段的字元,而參數optionally表示數值型字段無效,即數值類型的值不要加包圍符

lines terminated by – 指定行間分隔符,即定義每行的分隔符

kettle之windows mysql 表的導出檔案及load data導入檔案
kettle之windows mysql 表的導出檔案及load data導入檔案

出現這個問題的原因是mysql的secure_file_prive這個選項沒有開啟,或者這個選擇了特定的檔案路徑,隻有在這個檔案路徑下的檔案才能導入導出mysql

kettle之windows mysql 表的導出檔案及load data導入檔案
kettle之windows mysql 表的導出檔案及load data導入檔案

重新開機mysql;

kettle之windows mysql 表的導出檔案及load data導入檔案

再執行:

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

kettle之windows mysql 表的導出檔案及load data導入檔案

報沒有權限寫入檔案,需要把‘\’改為‘/’,即可成功!

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

kettle之windows mysql 表的導出檔案及load data導入檔案
kettle之windows mysql 表的導出檔案及load data導入檔案

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 '"' ;

kettle之windows mysql 表的導出檔案及load data導入檔案

要讀取以逗号分隔的檔案,正确的語句是:

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

FIELDS TERMINATED BY ',';

繼續閱讀