sql-server - 数据库从 Postgres 迁移到 MS SQL Servr
问题描述
我的任务是将一些数据库从 Postgres 迁移到 MS SQL Server。
我试图按照这里的链接使用 SQL Server 导入和导出向导,https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/connect-to-a- postgresql-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15。
我选择:“SQL Server Native Client 11.0”作为目标,“从一个或多个表或视图复制数据”。
我正在尝试将数据迁移到现有表中。
但是,当我尝试进行迁移时,出现以下错误:
我不是 DBA,我的 Postgres 和 SQL 技能充其量只是平庸,所以任何建议都将不胜感激!
解决方案
SSMS ProviderDescriptors.xml 文件未正确映射 PostgreSQL ODBC 驱动程序返回的元数据。此文件位于我的 SSMS 安装目录“C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\ProviderDescriptors”中。
使用从这个问题和MS 博客文章中收集的信息,我能够通过System.Data.Odbc.OdbcConnection
ProviderDescriptor
下面的配置部分成功地从 PostgreSQL 导入。我更改了MaximumLengthColumnName
,NumericPrecisionColumnName
和NumericScaleColumnName
中的属性值System.Data.Odbc.OdbcConnection
ColumnSchemaAttributes
以匹配 PosgreSQL ODBC 驱动程序返回的实际名称(LENGTH
, 和PRECISION
, SCALE
)。
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
<dtm:SchemaNames
TablesSchemaName="Tables"
ColumnsSchemaName="Columns"
ViewsSchemaName="Views"
/>
<dtm:TableSchemaAttributes
TableCatalogColumnName="TABLE_CAT"
TableSchemaColumnName="TABLE_SCHEM"
TableNameColumnName="TABLE_NAME"
TableTypeColumnName="TABLE_TYPE"
TableDescriptor="TABLE"
ViewDescriptor="VIEW"
SynonymDescriptor ="SYNONYM"
NumberOfTableRestrictions="3"
/>
<dtm:ColumnSchemaAttributes
NameColumnName = "COLUMN_NAME"
OrdinalPositionColumnName="ORDINAL_POSITION"
DataTypeColumnName = "TYPE_NAME"
MaximumLengthColumnName = "LENGTH"
NumericPrecisionColumnName = "PRECISION"
NumericScaleColumnName = "SCALE"
NullableColumnName="NULLABLE"
NumberOfColumnRestrictions="4"
/>
<dtm:Literals
PrefixQualifier="""
SuffixQualifier="""
CatalogSeparator="."
SchemaSeparator="."
/>
</dtm:ProviderDescriptor>
您可能希望保存原始ProviderDescriptors.xml
文件并在完成导入任务后恢复到它。
推荐阅读
- python - 具有比赛时间的元组列表。需要列出每场比赛获胜者的姓名和时间
- docker-compose - 使 nextcloud 在前缀路径上工作(使用 docker 和 caddy)
- excel - 在 VBA 中对多维数组进行排序 - 降序版本
- batch-file - MSDeploy 自动生成的 deploy.cmd 路径问题?
- python - 为什么我不能在创建实例之前调用某些类的方法?理解逻辑
- android - java.lang.OutOfMemoryError - 无法打开第二个活动
- javascript - 无法在不可变记录中正确设置此嵌套对象
- python - 在 python tkinter 中设置滚动条位置的正确方法
- php - PHP 和 MYSQLI 检查用户 ID 是否存在,如果不存在则创建它
- matlab - 如何在 foo 循环中创建图形?