【发布时间】:2012-04-29 21:24:54
【问题描述】:
我正在尝试使用 SQL Server 的导入和导出向导 (SQL Server 2008 R2) 导出 SQL Server 数据库。数据库模式在目标 PostgreSQL 数据库中创建得很好,大多数数据也是如此。仅当我尝试导出第一行中具有 NULL 值的列时,它才会崩溃:
Error 0xc020844b: Data Flow Task 22: An exception has occurred during data insertion, the message returned from the provider is: Kan een object van het type System.Int32 niet converteren naar het type System.Char[].
(SQL Server Import and Export Wizard)
不幸的是,相关的例外是荷兰语,但它表示它无法将System.Int32 类型的对象转换为System.Char[]。原始 SQL Server 架构中的列类型在生成的 PostgreSQL 数据库中为 int 和 integer。
仅当第一行中的列的值为NULL 时才会发生这种情况。我认为它试图根据列的第一个值推断数据的类型,如果第一个值为NULL,则默认为System.Char[]。有没有办法改变这种行为,让数据的类型以与生成的 PostgreSQL 列的类型相同的方式推断出来(因为它正确地做到了)?
【问题讨论】:
-
您可以尝试在 SQL Server 中将所有空值替换为虚拟值,并在迁移后将其替换回来。
-
@ErwinBrandstetter 是的,我可以这样做,但我希望有更简单的方法。
-
你可以试一试,看看这是否确实是导致问题的原因。
-
@ErwinBrandstetter 如果我这样做确实有效,但我不得不这样做很烦人。
标签: sql-server database postgresql