pg匯入資料至sqlserver方法整理及對比

2021-10-23 21:51:20 字數 1286 閱讀 5609

業務方要求將pg中的乙個表匯入sqlserver,表約1000萬行。測試了幾種常用的匯入匯出方法,有成功也有失敗的。

如果沒有用到特殊資料型別或者字元,資料量也比較小,這種方法一般是可以的。

裡面會有建表、建索引、授權等語句,需要處理一下,或者可以用 --data-only選項。

pg_dump -d dbname -u username -t tablename --inserts > tablename.sql
根據檔案大小分為三種情況:

#cd到檔案所在目錄

sqlcmd -i ***.sql -d dbname

在測試環境執行的時候2g的sql檔案執行占用記憶體超過15g(並且還在往**)

測試bulk insert效率很高,960萬行資料執行約53秒,對記憶體影響也不大。

psql -d dbname

\copy (select * from ***) to '/tmp/***.csv' delimiter ',' csv;

大多數pg裝在linux,sqlserver裝在windows,所以要特別注意換行符的問題,否則執行bulk insert的時候會報錯第一行最後一列過長,因為它識別不到換行符,把後面的所有資料都當做第一行最後一列。

#linux格式轉windows

sed -e 's/$/\r/' 1pnet.txt >dos.txt

bulk insert 庫名..表名 

from 'c:\test.csv'

with (

fieldterminator = ',', ---分隔符

rowterminator = '\n' ---換行符

)

第一步同上,第二步使用sqlserver匯入匯出嚮導,匯入型別選擇「平面檔案」,定義列名及型別。

但說實話匯入匯出嚮導經常會遇到奇奇怪怪的報錯,而且搜不到啥好的解決方法,本次遇到報錯如下

根據搜到的文章說是字符集問題,但檢查匯入表裡並沒有特別字元,改換匯入時選擇的字符集後也無效,暫未找到解決方法

第一步同上,第二步使用bcp匯入

參考 

從access匯入資料到sqlserver

執行 select into 巡查記錄1 from opendatasource microsoft.jet.oledb.4.0 data source e 匯入匯出 black hd catayou 20071128.mdb persist security info false jet oled...

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

公司進行年終總結,需要對300w客戶進行追蹤,但是這300w客戶的id匯入資料庫中讓我小小糾結了一下。因為需求部門提給我的是excel的資料格式,所以第一反應是用excel匯入,但是sql server2005只支援office 2003的格式,所以只能用xls匯入,但是xls一張表只能支援6553...

匯入Excel資料至Access

private void getexcelsheetsbyupload string strexcelpath oledbconn new oledbconnection connstring oledbconn.open 取得到包含資料架構的資料表 dt oledbconn.getoledbsch...