【问题标题】:Connecting to Athena using Simba ODBC Driver - Long string converts to Text issue使用 Simba ODBC 驱动程序连接到 Athena - 长字符串转换为文本问题
【发布时间】:2021-06-07 13:25:10
【问题描述】:

我们最近使用Athena 移至AWS Data Lake。我们使用SQL 中的LinkedServer 连接到Athena,它与ODBC 一起使用Simba Driver

我们面临的问题是,每当Athena 中的任何string 超过4000 个字符时,驱动程序会将其转换为Text 对象,当我们从SSIS 读取时,该对象无法转换为标准数据类型喜欢nvarchar

一个简单的选择是开始使用Text 作为数据类型,但Text 已被弃用且不得使用。

有没有人遇到过类似的问题。很高兴根据需要提供任何信息。

我看到以下消息 -

An OLE DB record is available. Description: "OLE DB provider "MSDASQL" for linked server "AWS-Test-DataLake-EU-West-1" returned message "Requested conversion is not supported.".".

【问题讨论】:

  • 确切的错误信息是什么?
  • 嘿,在问题中添加了它。谢谢
  • 您是否尝试过调整 ODBC DSN 设置的“高级选项”下的“字符串列长度”?
  • 所以如果我将长度更改为我需要的长度,我们会收到上述消息,如果我将其限制为 4000,我会收到与列 '[MSDASQL].Tes1 的预期数据长度不匹配的返回数据'。 (最大)预期数据长度为 4000,而返回数据长度为 4233
  • 如果驱动程序的最大字符串大小太小并且允许输入文本,只需将其强制转换为文本或在选择中明确执行此操作以通过驱动程序。就 ssis 而言,varchar(max) = dt_text,nvarchar(max) = dt_ntext。您应该能够将两端都保留在非文本形式中并在两者之间进行修改。

标签: sql ssis odbc amazon-athena simba


【解决方案1】:

ssis 中的 str 和 wstr 数据类型的最大长度为 4000。Text 和 ntext 将被弃用,但我认为它仅在 sql server 中而不在 ssis 中。因此您可以在 ssis 包中使用 ntext 作为数据类型,并在 sql 目标表中使用 nvarchar(max)。

【讨论】:

    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 2022-06-25
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多