bcp命令匯入大量資料到sql server

2021-06-27 22:03:11 字數 2554 閱讀 5824

公司進行年終總結,需要對300w客戶進行追蹤,但是這300w客戶的id匯入資料庫中讓我小小糾結了一下。

因為需求部門提給我的是excel的資料格式,所以第一反應是用excel匯入,但是sql server2005只支援office 2003的格式,所以只能用xls匯入,但是xls一張表只能支援65535條資料,相對於300w條資料來說,需要操作將近50次,太麻煩了。

後來發現乙個excel可以匯入多個sheet,於是又在乙個excel中加入了10個sheet,結果不僅匯入過程變慢了,而且多個sheet無法匯入乙個表中(也許我操作有誤,沒有繼續研究了)。

後來發現用sql語句直接匯入:

select * into t# from openrowset( 'microsoft.jet.oledb.4.0', '

excel

5.0;hdr=yes;imex=1; database=d:\kq\salary.xls',sheet1$)

後來研究了半天,怎麼執行都報錯,估摸著是我那台電腦上沒有裝office,但是奇怪的是sql server直接匯入就能匯入,這樣卻不行。

最後找啊找,終於找到了bcp命令,而且發現可以用txt的方式匯入,發現當時自己真的是腦子一根筋,不知道換個模式,死命去找怎麼用excel匯入,囧。

在sql server中執行:

exec master..xp_cmdshell \'

bcps_hgad_dbs.dbo.ad_data_tab in d:\test.txt -t -c'

bcp命令簡單說明:

bcp
| "query"}:指定連線的資料庫名和表,用於匯入匯出資料

data_file:指定大容量複製的方向及資料檔案的完整路徑

[-m max_errors]:指定取消 

bcp操作之前可能出現的語法錯誤的最大數目

[-f format_file]:指定格式化檔案的完整路徑
[-x]:與 

format

和 -f

format_file

選項一起使用,可以生成基於 xml 的格式化檔案

[-e err_file]:指定錯誤檔案的完整路徑,此檔案用於儲存 

bcp 

實用工具無法從檔案傳輸到資料庫的所有行。

[-f first_row]:指定要從表中匯出或從資料檔案匯入的第一行的編號。

[-l last_row]:指定要從表中匯出或從資料檔案中匯入的最後一行的編號。
[-b batch_size]:指定每批匯入資料的行數。

[-d database_name]: 指定要連線到的資料庫。預設情況下,bcp.exe 連線到使用者的預設資料庫。

[-n]: 使用資料的本機(資料庫)資料型別執行大容量複製操作。
[-c]: 使用字元資料型別執行該操作。
[-n]:執行大容量複製操作時,對非字元資料使用本機(資料庫)資料型別的資料,對字元資料使用 unicode 字元。
[-w]:使用 unicode 字元執行大容量複製操作。
[-v (70 | 80 | 90 )]:使用 sql server 早期版本中的資料型別執行大容量複製操作。 

[-q]: 在 

bcp實用工具和 sql server 例項之間的連線中,執行 set quoted_identifiers on 語句。

[-c  ]: 指定資料檔案中資料的**頁。
[-t field_term]: 指定字段終止符。

[-r row_term]: 指定行終止符。預設值為 

/n(換行符)。

[-i input_file]: 指定響應檔案的名稱
[-o output_file]: 指定檔名稱,該檔案用於接收從命令提示符重定向來的輸出。
[-a packet_size]:指定伺服器發出或接收的每個網路資料報的位元組數。

[-s [server_name[/instance_name]]]:指定要連線的 sql server 例項。

[-u login_id] :指定用於連線到 sql server 的登入 id。
[-p password]:指定登入 id 的密碼。

[-t]: 指定 

bcp實用工具通過使用整合安全性的可信連線連線到 sql server。不需要網路使用者的安全憑據、

login_id

和 password

。如果未指定 

–t,則需要指定 

–u和 

–p才能成功登入。

[-v]: 報告 

bcp實用工具的版本號和版權。

[-r]:指定使用客戶端計算機區域設定中定義的區域格式,將貨幣、日期和時間資料大容量複製到 sql server 中。
[-k]:指定在操作過程中空列應該保留 null 值,而不是所插入列的任何預設值。
[-e]: 指定匯入資料檔案中的標識值用於標識列。
[-h"hint [,...n]"]:指定向表或檢視中大容量匯入資料時要用到的提示。

bcp匯入到mysql BCP 匯入匯出資料庫資料

使用 bcp 將資料庫遷移到 azure sql database 所有 都是在本機sql上執行 先開啟cmdshell exec sp configure show advanced options 1 goreconfigure goexec sp configure xp cmdshell 1...

使用BCP 命令輸入大量的資料

由於前段時間做大資料量的匯入程式.在做的時候遇到的問題.幾萬條的資料從excel中匯入到資料庫中,速度是非常的慢,程式簡直不能執行,後來就研究了bcp命令的方式進行匯入.幾十萬的資料也就幾十秒,很快,所以將自己的小成果給大家分享.當然,可能有很多可以完善的地方,大家共同努力吧 使用bcp命令輸入大量...

SQL2005的BCP命令匯入匯出資料

bcp export.bat echo bcp作成 d k.log cd d d set dbname jack set uname sa set pname sa set sname 127.0.0.1 bcp jack.student out student.txt u uname p pnam...