到 Amazon Redshift 的 ODBC 连接字符串

Posted

技术标签:

【中文标题】到 Amazon Redshift 的 ODBC 连接字符串【英文标题】:ODBC Connection String to Amazon Redshift 【发布时间】:2015-12-17 01:34:06 【问题描述】:

有没有办法在连接字符串中指定“附加选项”的设置?

我正在尝试创建一个连接字符串,用于从安装了 SAS/Access to OleDb 的 SAS 访问 Amazon Redshift。

因为我只能访问 OleDb,所以我必须使用 OleDb 提供程序 MSDASQL 来连接到 ODBC。

libname outhere oledb schema=ProjectXYZ init_string=
"
Provider=msdasql;
Driver=Amazon Redshift (x64);
Server=blah.blah.blah.redshift.amazonaws.com;
Database=minions;
UID=bigboss;
PWD=boomboom;
Port=5439;
";

这主要是可行的,SAS Explorer 列出了数据库中的所有表(甚至那些不在 ProjectXYZ weird 中的表)。数据步可以贯穿数据。

问题是当我使用ViewTable查看数据时出现错误

NOTE: Table has been opened in browse mode.
ERROR: Open cursor error: ICommand::Execute failed. : [Amazon][RedShift ODBC] (30) Error occurred while trying to execute a que

可以使用 ODBC 管理创建一个基于 Amazon Redshift (x64) 的 UserDSN,并在设置对话框中选择驱动程序附加选项“单行模式”,从而使 ViewTable 工作。

我找不到任何关于 name=value 对应该是什么来指定其中任何一个的选择的文档

其他选项:

单行模式 使用声明/获取,缓存大小100 使用多个语句 将整个结果检索到内存中我认为这是驱动程序默认值 启用 HTTP 代理连接 服务器端口: 代理端口:

【问题讨论】:

【参考方案1】:

这是我能找到的最全面的选项列表:http://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-options.html

以下是文档中提到的一些 ODBC 选项:

SingleRowMode(默认 0) UseDeclareFetch(默认 0) UseMultipleStatements(默认 0) 端口(默认 5439)

当 UseDeclareFetch=0 和 SingleRowMode=0 时,驱动程序将整个查询结果检索到内存中。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 谢谢你,布赖恩。我在答案中包含了链接文章的部分内容

以上是关于到 Amazon Redshift 的 ODBC 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 Amazon Redshift 迁移到 DynamoDB

将数据从 Amazon S3 复制到 Redshift 并避免重复行

批量上传到 Amazon Redshift

将数据从 Amazon redshift 卸载到 Amazon s3

AWS:将日志从 Amazon CloudWatch 导出到 Amazon Redshift

将数据从 sql server 增量上传到 Amazon Redshift [关闭]