1從SQLServer匯出資料
執行BCP:
bcp "..." queryout "F:test.txt" -c –S1.2.3.4 -Usa -P1111
命令參數含義:
(1) 匯入。
這個動作使用in命令完成,後面跟需要匯入的檔案名稱。
(2) 匯出。
這個動作使用out命令完成,後面跟需要匯出的檔案名稱。
(3) 使用SQL語句匯出。
這個動作使用queryout命令完成,它跟out類似,只是資料來源不是表或視圖名,而是SQL語句。
(4) 匯出格式檔案。
這個動作使用format命令完成,後而跟格式檔案名稱。
下面介紹一些常用的選項:
-f format_file
format_file表示格式檔案名稱。這個選項依賴於上述的動作,如果使用的是in或out,format_file表示已經存在的格式檔案,如果使用的是format則表示是要產生的格式檔案。
-x
這個選項要和-f format_file配合使用,以便產生xml格式的格式檔案。
-F first_row
指定從被匯出表的哪一行匯出,或從被匯入檔案的哪一行匯入。
-L last_row
指定被匯出表要導到哪一行結束,或從被匯入檔案導資料時,導到哪一行結束。
-c
使用char類型做為儲存類型,沒有首碼且以"/t"做為欄位分割符,以"/n"做為行分割符。
-w
和-c類似,只是當使用Unicode字元集拷貝資料時使用,且以nchar做為儲存類型。
-t field_term
指定字元分割符,預設是"/t"。
-r row_term
指定行分割符,預設是"/n"。
-S server_name[ /instance_name]
指定要串連的SQL Server伺服器的執行個體,如果未指定此選項,BCP串連原生SQL Server預設執行個體。如果要串連某台機器上的預設執行個體,只需要指定機器名即可。
-U login_id
指定串連SQL Sever的使用者名稱。
-P password
指定串連SQL Server的使用者名稱密碼。
-T
指定BCP使用信任連接登入SQL Server。如果未指定-T,必須指定-U和-P。
-k
指定空列使用null值插入,而不是這列的預設值。
2匯入資料到MySQL
執行Load Data命令:
load data local infile "F:/test.txt" into table table1character set gbk;
命令參數含義:
load data [low_priority] [local] infile 'file_name txt' [replace |ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]
2.1 Low_priority
如果你指定關鍵詞low_priority,那麼MySQL將會等到沒有其他人讀這個表的時候,才把插入資料。
2.2 Local
如果指定local關鍵詞,則表明從客戶主機讀檔案。如果local沒指定,檔案必須位於伺服器上。
2.3 Replace & Ignore
replace 和ignore關鍵詞控制對現有的唯一鍵記錄的重複的處理。如果你指定replace,新行將代替有相同的唯一索引值的現有行。如果你指定ignore,跳 過有唯一鍵的現有行的重複行的輸入。如果你不指定任何一個選項,當找到重複鍵時,出現一個錯誤,並且文字檔的餘下部分被忽略。
2.4分隔字元
terminated by描述欄位的分隔字元,預設情況下是tab字元(t)
enclosed by描述的是欄位的括起字元。
escaped by描述的逸出字元。預設的是反斜線(backslash:)
lines 關鍵字指定了每條記錄的分隔字元預設為'n'即為分行符號
2.5匯入部分列
load data infile可以按指定的列把檔案匯入到資料庫中。當我們要把資料的一部分內容匯入的時候,,需要加入一些欄目(列/欄位/field)到MySQL資料庫中,以適應一些額外的需要。比方說,我們要從Access資料庫升級到MySQL資料庫的時候
下面的例子顯示了如何向指定的欄目(field)中匯入資料:
load data infile "/home/Ordertxt" into table Orders(Order_Number, Order_Date, Customer_ID);
2.6相對&絕對路徑
(1)如果給出一個絕對路徑名,伺服器使用該路徑名。
(2)如果給出一個有一個或多個前置組件的相對路徑名,伺服器相對伺服器的資料目錄搜尋檔案。
(3)如果給出一個沒有前置組件的一個檔案名稱,伺服器在當前資料庫的資料庫目錄尋找檔案。
例如: /myfile txt”給出的檔案是從伺服器的資料目錄讀取,而作為“myfile txt”給出的一個檔案是從當前資料庫的資料庫目錄下讀取。
2.7字元集
character set gbk指定字元集為gbk,與檔案的編碼格式(ANSI)保持一致。否則中文資料匯入後可能變為亂碼。
2.8靈活匯入
可以在匯入的同時,插入一些其他列:
load data local infile "F:/test.txt"into table table1 set pin='zs',create_date=current_timestamp;
3常見問題
3.1無法運行Load Data命令
執行load data localinfile時報錯:
The used command is not allowed with this MySQL version
解決方案是:啟動mysql用戶端是加上--local-infile=1參數
$ mysql --local-infile=1 –uroot –p123 –h 127.0.0.1
3.2用BCP匯出UTF-8格式
解決方案是加上-C選項:
$ bcp "query sql…" queryout "F:test.txt" -c -C65001–S1.2.3.4 -Usa -P1111