公司進行年終總結,需要對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...