rea*_*ers 11 sql-server postgresql ssis data-migration
我需要将数据库从Postgres 7迁移到SQL Server 2008.我熟悉SSIS导入和导出向导,但我对如何定义数据源或定义数据提供程序感到困惑.
将Postgres迁移到SQL Server的最佳方法是什么,如何为postgres定义数据源/驱动程序?
Joh*_*hnB 10
祝你好运,试图从PostgreSQL的导入使用SQL Server导入和导出向导的SQL Server.然而,我看过无数的留言板线程与无法得到它的工作的人.例如:
这是我在这个主题上找到的最有用的主题:
帮助那些可能尝试实现类似我的目标的人.相反,选择在数据源中的"PostgreSQL的OLE DB提供程序"的下拉SQL Server导入和导出向导的菜单中选择".NET Framework数据提供程序的ODBC"
然后你必须创建一个DSN并提供一个ConnectionString.以下ConnectionString为我工作
驱动= {的PostgreSQL};服务器=本地主机;端口= 5432;数据库= TestMasterMap; UID = postgres的; PWD =;
要创建DSN,您必须进入管理工具→数据源(ODBC)并创建用户DSN.完成此操作后,您可以在SQL Server导入和导出向导的DSN文本框中提供DSN名称.
一位评论者声称它有效,但他在大桌子上出现"读取元组时内存不足"的错误.因此,对于行数超过300万的表,他必须将导入分为300万行.
此外,还有一个指向该线程中PostgreSQL的本机.NET提供程序的链接.
就个人而言,如果这只是我必须做的一次,如果我理解了架构和数据,我会尝试:
可能需要花费更少的时间来完成上述工作,而不是乱用SSIS导入/导出向导和PostgreSQL几天(但如果这些工具有效,那将会很好!)
我在使用SQL Server 2008 R2中的导入向导从PostgreSQL导入表时遇到问题。我安装了PostgreSQL ODBC驱动程序,因此对于导入向导中的数据源,我选择了“ .db的.Net Framework数据提供程序”,并为我的PostgreSQL数据库提供了DSN名称。向导发现表没问题,但是当我执行导入时出现错误
无法检索源和目标数据的列信息。
“结算”-> [dbo]。[结算]:
–找不到列-1。
我在此处的Microsoft博客文章中找到了解决方案。显然问题是在报告列元数据时,各种ODBC驱动程序使用不同的属性名称。为了使导入工作正常,我必须编辑位于以下位置的“ ProviderDescriptors.xml”文件
C:\ Program Files \ Microsoft SQL Server \ 100 \ DTS \ ProviderDescriptors \ ProviderDescriptors.xml
在里面 ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
Run Code Online (Sandbox Code Playgroud)
...元素我必须从...更改属性
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "COLUMN_SIZE"
NumericPrecisionColumnName = "COLUMN_SIZE"
NumericScaleColumnName = "DECIMAL_DIGITS"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
Run Code Online (Sandbox Code Playgroud)
... 至 ...
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
Run Code Online (Sandbox Code Playgroud)
也就是说,我必须调整MaximumLengthColumnName,NumericPrecisionColumnName以及NumericScaleColumnName属性值"LENGTH","PRECISION"和"SCALE"分别。
做出更改后,从PostgreSQL到SQL Server的导入成功运行。
| 归档时间: |
|
| 查看次数: |
20212 次 |
| 最近记录: |