字符串或二进制数据将从SQL Server截断到PostgreSQL链接服务器

时间:2018-07-19 21:40:57

标签: sql-server postgresql linked-server

我正在尝试将一些数据从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

它工作正常。但是字符串被截断了。

我该如何解决?

1 个答案:

答案 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)