gpt4 book ai didi

sql - 如何将文本数据类型从 PostgreSQL 数据库转换/转换为链接的 MS SQL Server?

转载 作者:行者123 更新时间:2023-12-02 04:34:00 25 4
gpt4 key购买 nike

早上好/下午好!一整天的大部分时间都在研究这个问题,所以我认为是时候吸引更多的受众了。

我正在运行 Microsoft SQL Server 2012。我已经创建了一个到 PostgreSQL 服务器的“链接服务器”。当我尝试向 PostgreSQL 服务器发出查询时,我得到以下信息:

SELECT *
FROM OPENQUERY(MYDB, 'SELECT notes from remote_view LIMIT 50');

Msg 7347, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' for linked server 'MYDB' returned data that does not match expected data length for column '[MSDASQL].notes'. The (maximum) expected data length is 8000, while the returned data length is 9088.

如果我截断该字段(使用LEFT(notes, 4000))我可以让它工作。 PostgreSQL 表上的字段是“文本”数据类型。

有什么想法可以让数据在不丢失任何数据的情况下被找到吗?

更新#1:

尝试将值转换为 varchar(max) 会产生以下结果:

SELECT *
FROM OPENQUERY(MYDB, 'SELECT cast(notes as varchar(max)) as notes2 from remote_view LIMIT 50');

OLE DB provider "MSDASQL" for linked server "QPID" returned message "ERROR: syntax error at or near "max";
No query has been executed with that handle".
Msg 7350, Level 16, State 2, Line 1
Cannot get the column information from OLE DB provider "MSDASQL" for linked server "QPID".

如果我尝试将其转换为 varchar(8000),它会给出以下结果:

OLE DB provider "MSDASQL" for linked server "QPID" returned message "Requested conversion is not supported.".

最佳答案

我遇到了确切的问题。我找到了一个解决方法,如果你的文本数据的长度不大于 Postgresql 的 character varying size limit (10485760)。作为第一步,您只需将 Postgresql ODBC MaxLongVarchar 设置更改为 10485760,如下面的屏幕截图所示。

PostgreSql ODBC Settings

之后您有三个选择:

  • 如果可能的话,您可以在 PostgreSql Server 上将文本数据字段更改为字符变化 (10485760)。以下语法将毫无问题地工作。

    SELECT * FROM LINKEDSERVER.dbname.schemaname.tablename
  • 如果无法更改原始表,可以在 postgresql 上创建一个 View ,将所有文本字段转换为 Originaltextfield::varchar(10485760) 并从 postgresql View 中选择,而不是表

    SELECT * FROM LINKEDSERVER.dbname.schemaname.viewname
  • 您可以按如下方式使用 OPENQUERY

    SELECT * FROM OPENQUERY(LINKEDSERVER, 'SELECT id, textfield::varchar(10485760) FROM schemaname.tablename')

关于sql - 如何将文本数据类型从 PostgreSQL 数据库转换/转换为链接的 MS SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com