【问题标题】:String or binary data would be truncated from SQL Server to PostgreSQL linked server字符串或二进制数据将从 SQL Server 截断到 PostgreSQL 链接服务器
【发布时间】:2018-07-20 13:08:24
【问题描述】:

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: sql-server postgresql linked-server


    【解决方案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)

    【讨论】:

      猜你喜欢
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      相关资源
      最近更新 更多