我正在尝试将一些数据从SQL Server迁移到PostgreSQL。
有一个字符串列会导致错误:
字符串或二进制数据将被截断
在SQL Server中,我的列类型为nvarchar(max)
,在PostgreSQL中,列的类型为text
。
我的查询看起来像这样:
INSERT INTO PGLINKED.MYPGDB.MYTARGETTABLE
SELECT
MyColumn
FROM
MYSRCTABLE
但是,当我尝试在Select语句中将MyColumn强制转换为nvarchar(4000)
INSERT INTO PGLINKED.MYPGDB.MYTARGETTABLE
SELECT
MyColumn = CAST(MyColumn AS NVARCHAR(4000))
FROM
MYSRCTABLE
它工作正常。但是字符串被截断了。
我该如何解决?
答案 0 :(得分:-1)
nvarchar(max)
与nvarchar(4000)
不同。如果将其转换为较小的长度(在这种情况下,最大长度为4000),则将截断数据。
以下是SQL Server中的示例:
DECLARE @ varchar(100) = REPLICATE('A', 100)
SELECT @ AS uncasted, CAST(@ AS VARCHAR(4)) AS casted
尝试将其转换为插入内容上的nvarchar(max)
。