4

我正在尝试使用 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.Int32System.Char[]. int原始 SQL Server 架构中的列类型integer在生成的 PostgreSQL 数据库中。

仅当第一行中的列值为 时才会发生这种情况NULL。我认为它试图根据列的第一个值推断数据的类型,System.Char[]如果第一个值是NULL. 有没有办法改变这种行为,并让数据的类型以与生成的 PostgreSQL 列的类型相同的方式推断出来(因为它正确地做到了)?

4

1 回答 1

1

问题似乎不在 PostgreSQL 方面,因此您可能应该寻找该错误的转换工具。来自 psql:

test=# CREATE TABLE import (id int NOT NULL PRIMARY KEY, val1 int, val2 int);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "import_pkey" for table "import"
CREATE TABLE
test=# COPY import FROM STDIN (FORMAT CSV);
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1,,111
>> 2,22,222
>> \.
test=# SELECT * FROM import;
 id | val1 | val2 
----+------+------
  1 |      |  111
  2 |   22 |  222
(2 rows)
于 2012-04-18T16:33:27.197 回答