导出到PostgreSQL时SQL Server导入和导出向导出错

时间:2012-04-18 12:58:03

标签: sql-server database postgresql

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

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

1 个答案:

答案 0 :(得分: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)