我正在尝试使用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架构中的列类型为int
和integer
。
仅当第一行中的列值为NULL
时才会发生这种情况。我认为它会尝试根据列的第一个值推断数据类型,如果第一个值为System.Char[]
,则默认为NULL
。有没有办法改变这种行为,并以与生成的PostgreSQL列的类型相同的方式推断数据的类型(因为它正确地做到了)?
答案 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)