我需要將數據庫從Postgres 7遷移到SQL Server 2008.我熟悉SSIS導入和導出嚮導,但我很難定義如何定義數據源或定義數據提供者。從Postgres遷移到SQL Server 2008
什麼是將Postgres遷移到SQL Server的最佳方式,以及如何爲postgres定義數據源/驅動程序?
我需要將數據庫從Postgres 7遷移到SQL Server 2008.我熟悉SSIS導入和導出嚮導,但我很難定義如何定義數據源或定義數據提供者。從Postgres遷移到SQL Server 2008
什麼是將Postgres遷移到SQL Server的最佳方式,以及如何爲postgres定義數據源/驅動程序?
我希望你在嘗試使用SQL Server導入和導出嚮導從PostgreSQL導入到SQL Server中運氣不錯。但是,我已經閱讀了大量的留言板主題,讓人們無法正常工作。例如:
這裏是我的話題中發現的最有用的線索:
幫助可能試圖達到與我相似的目標的人。相反,選擇在數據源中的「PostgreSQL的OLE DB提供程序」的下拉SQL Server導入和導出嚮導的菜單中,選擇「爲ODBC .NET Framework數據提供」
那麼你必須做一個DSN,並提供一個ConnectionString。以下ConnectionString爲我工作
Driver = {PostgreSQL}; Server = localhost; Port = 5432; Database = TestMasterMap; Uid = postgres; Pwd =;
要創建一個DSN,您必須進入AdministrativeToolsàData Sources(ODBC)並創建一個用戶DSN。完成此操作後,您可以在SQL Server導入和導出嚮導的DSN文本框中提供DSN名稱。
一位評論者聲稱,它的工作,但他得到了「內存不足而閱讀的元組」上大表的錯誤。因此,對於擁有300多萬行的表格,他不得不將進口分成300萬行。
此外,該線程中有一個link to the native .NET provider for PostgreSQL。
個人而言,如果這是什麼,我只有做一次,如果我理解架構和數據還算不錯,我會嘗試:
這可能需要你更少的時間做比SSIS導入/導出嚮導和PostgreSQL搞亂了天以上(但如果這些工具的工作就好!)
當我完成了徵求意見的上面的答案,我想到嘗試SQL WorkbenchJ;它有一個數據泵功能,對我來說工作得很好。我設法將數據從我的PostgreSQL數據庫導出到SQL服務器實例。
那些想要以批處理模式(通過shell)運行的,請按照以下步驟操作:Google Groups Thread。討論中提到的WbCopy命令沒有真正記錄在任何可以找到的位置,但是可以通過數據泵接口生成一個命令,然後更改所需的任何內容。
我在使用SQL Server 2008 R2中的導入嚮導從PostgreSQL導入表時遇到了問題。我安裝了PostgreSQL ODBC驅動程序,因此對於導入嚮導中的數據源,我選擇了「.Net Framework Data Provider for Odbc」併爲我的PostgreSQL數據庫提供了DSN名稱。嚮導發現表格沒問題,但是當我去執行導入時,我得到了錯誤
無法檢索源數據和目標數據的列信息。
「結算」 - > [DBO] [計費]:
- 找不到列-1。
我在Microsoft博客文章here中找到了解決方案。顯然問題是各種ODBC驅動程序在報告列元數據時使用不同的屬性名稱。爲了讓進口工作,我不得不編輯 「ProviderDescriptors.xml」 文件,該文件是位於
C:\ Program Files文件\ Microsoft SQL Server的\ 100 \ DTS \ ProviderDescriptors \ ProviderDescriptors.xml
在該...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
...元素我不得不改變從屬性...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
...到...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
即,我不得不分別來調整MaximumLengthColumnName
,NumericPrecisionColumnName
和NumericScaleColumnName
屬性值"LENGTH"
,"PRECISION"
,和"SCALE"
,。
一旦進行了更改,PostgreSQL導入到SQL Server成功運行。
感謝您的見解!我從來沒有讓它工作! – reach4thelasers 2016-11-19 13:30:53
您會從DataSources下拉列表中選擇SQL Server Native Client。我猜Postgres需要odbc提供者,但是我不知道如何實現它 – reach4thelasers 2010-09-14 16:58:59
你現在如何連接到Postgres?您還沒有設置postgres的ODBC數據源?是的,你需要那個。 – JohnB 2010-09-14 17:01:57
問題1:爲什麼有人想要這樣做?這不僅是經濟上的自殺,也是技術上的自殺。 – 2015-10-21 17:15:54