如何使用 App Connect 与 Amazon Redshift
Amazon Redshift 是由 AWS提供的完全受管数据仓库解决方案,支持您存储和查询大量分析数据。 它使用 SQL 来分析各种数据存储器中的结构化和半结构化数据,您可以在这些数据存储器中访问和分析数据,而无需设置专用数据仓库。
连接到 Amazon Redshift
完成在 App Connect Designer 页面(以前的目录页面) 或流程编辑器中看到的连接字段。 如有必要,请与您的 Amazon Redshift 管理员获取这些值。
- 帐户名称
- 请为您的账户设置一个有意义的名称,以便您识别。
| 连接字段 | 描述 |
|---|---|
| 数据库主机名 | Amazon Redshift 数据库服务器的标准主机名或 IP 地址。 例如, myserver.abc.com 或 192.0.2.24。 |
| 数据库端口 | Amazon Redshift 数据库服务器用于侦听入局客户机连接的端口号 |
| 数据库名称 | 您连接到的 Amazon Redshift 数据库的名称 |
| 用户名 | 用于访问 Amazon Redshift 数据库帐户的用户名 |
| 密码 | 用于访问 Amazon Redshift 数据库帐户的密码 |
| 模式 | 要访问的数据库对象的模式名称。 如果将此字段留空,那么将使用与用户关联的缺省模式。 |
| 最大池大小 | 单个连接池中允许的最大数据库连接数。 如果未指定,那么该值缺省为 0 (零)。 |
| 其他参数 | 其他参数的名称或值对,格式为 name1=value1;name2=value2 |
| 专用网络连接 | 选择App Connect用于连接到专用网络的专用网络代理名称。 该列表由在专用网络页面上创建的专用网络代理名称填充。 有关更多信息,请参阅连接到专用网络。 |
| 连接字段 | 描述 |
|---|---|
| 数据库主机名 | Amazon Redshift 数据库服务器的标准主机名或 IP 地址。 例如, myserver.abc.com 或 192.0.2.24。 |
| 数据库端口 | Amazon Redshift 数据库服务器用于侦听入局客户机连接的端口号 |
| 数据库名称 | 您连接到的 Amazon Redshift 数据库的名称 |
| 用户名 | 用于访问 Amazon Redshift 数据库帐户的用户名 |
| 密码 | 用于访问 Amazon Redshift 数据库帐户的密码 |
| 模式 | 要访问的数据库对象的模式名称。 如果将此字段留空,那么将使用与用户关联的缺省模式。 |
| 数据库服务器的CA证书 | 仅当服务器使用自签名证书,或者该证书尚未被信任(私有 CA)时,才需将 CA 或服务器证书指定为 PEM 格式。 |
| 最大池大小 | 单个连接池中允许的最大数据库连接数。 如果未指定,那么该值缺省为 0 (零)。 |
| 其他参数 | 其他参数的名称或值对,格式为 name1=value1;name2=value2 |
首次从 App Connect Designer 应用程序和 API 页面连接到 Amazon Redshift 终端节点时,请展开 Amazon Redshift ,然后单击连接。 更多信息,请参阅管理账户。
在流程中使用 App Connect创建的帐户之前,请将其重命名为一个有意义的名称,以便识别。 要重命名 应用程序和应用程序接口 页 上的账户,请选择该账户,打开其选项菜单(⋮),然后点击 重命名账户 。
一般注意事项
在将 App Connect Designer 与 Amazon Redshift配合使用之前,请注意以下注意事项:
- Amazon Redshift 连接器支持动态发现,并使用 JDBC 框架进行开发。
- 元数据字段及其关联描述将在运行时动态装入并以表格格式显示。 无法控制这些字段的显示,顺序和大小写,因为它们是从端点显示的。
- 目录页面中的表名也具有动态行为,并且无法在 App Connect 级别控制其显示顺序。
- 目标绑定字段具有可选字段 Schema。 如果未提供 模式 ,那么将使用公共模式,并且其表将列示在该帐户下。 当您为 "模式" 字段提供有效值时,将采用该值来列示表。
- 您可以在 Amazon Redshift UI 中创建任意数量的表,模式和数据库。
- 需要将某些特权或访问权授予新创建的表,模式和数据库,以便在 App Connect 流中使用这些表,模式和数据库。
- 必须在表和模式级别提供所有命令或授权,这将使您能够自动访问创建的新数据库。 以下是一组命令的一些示例:
- GRANT USAGE ON SCHEMA "cctforappconnect" TO dev; - GRANT CREATE ON SCHEMA "cctforappconnect" TO dev; - GRANT SELECT on "cctdata"."cctforappconnect"."author" TO dev; - GRANT INSERT on "cctdata"."cctforappconnect"."author" TO dev; - GRANT UPDATE on "cctdata"."cctforappconnect"."author" TO dev;
提示: 在上述 GRANT 语句中,cctdata是新数据库,cctforappconnect是该数据库下的模式,author是要将所有必需许可权关联到的表。 此处,dev是要向其授予所有这些许可权的数据库用户。确保使用
awsuser作为超级用户来授予这些许可权,因为它具有将这些许可权授予所创建的任何用户的所有特权。 如需更多信息,请参阅 AWS 文档页面中的 GRANT 部分。 如果授予对特定表的有限许可权,那么仅允许对该表执行这些操作。 例如,如果表仅被授予 SELECT 许可权,并且您尝试执行 INSERT 或 UPDATE 操作,那么该操作将失败并返回许可权错误。
样本错误消息的示例:在运行时抛出上述错误,所有操作仍将在目录页面上对您可见,即使具有有限的许可权 (例如,仅对表授予了 SELECT ,但您仍能够在目录页面上看到其他操作 (INSERT 或 UPDATE))。{ "message": "The query execution on the \"redshift\" database failed with an error: \"[IBM App Connect][Redshift JDBC Driver][Redshift]permission denied for relation test111. \".", "action": "Take the corrective action for your database type and then retry the operation.", "detail": "", "url": "", "data": { "errorDetail": "{\"type\":\"SQLException\",\"message\":\"[IBM App Connect][Redshift JDBC Driver][Redshift]permission denied for relation test111. \",\"SQLState\":\"42501\",\"errorCode\":\"0\",\"state\":\"425010\",\"inserts\":[\"amazonredshift\",\"redshift\",\"[IBM App Connect][Redshift JDBC Driver][Redshift]permission denied for relation test111. \"]}" } }- Amazon Redshift 不会使主键成为
unique字段,而是作为允许重复记录的结果的non null字段。 - 观察到当多个记录与 where 条件匹配时,对于 DELETE 和 UPDATE 操作,所有记录都会受到该操作的影响。 例如,如果有 25 条记录具有 ID=10,并且您尝试使用 ID=10进行 UPDATE 时,将在数据库中更新所有 25 条记录,并且输出中的计数将显示相同的记录。 在 DELETE 操作中也会看到类似的行为。
- 对于 UPSERT 操作,如果条件与多个记录匹配,那么将返回以下错误:
{ "message": "The update or create action found multiple records.", "action": "Ensure that the 'where' expression on the update or create action matches a maximum of one record.", "detail": "The 'where' clause for the update or create action matched multiple records in the application, but it can only update or create one record at a time.", "url": "", "data": { "errorDetail": "{\"statusCode\":400,\"message\":\"There are multiple instances found. UpsertWithWhere Operation will not be performed!\"}" } } - Amazon Redshift 支持两种具有预定义功能的数据类型:
- 几何类型 GeometryType以字符串形式返回输入几何体的子类型。
语法:
GeometryType(geom) - 超级日志函数 HLL_CREATE_SKETCH 返回一个封装了输入表达式值的 HLLSKETCH 数据类型。
语法:
HLL_CREATE_SKETCH (aggregate_expression)注:- 通过 App Connect UI 传递函数时,会将其视为 STRING ,而不是函数。 在此情况下,可能会发生错误。
- Amazon Redshift UI 需要两个十六进制格式的数据类型值,但请注意, App Connect 不会以十六进制格式转换这些函数。
在此类场景中,您需要将受支持的函数转换为十六进制格式,然后通过 App Connect UI 传递该函数。 有关这些数据类型所支持功能的更多信息,请参阅 AWS 文档页面中的 GeometryType 和 HLL_CREATE_SKETCH 函数。
- 几何类型 GeometryType以字符串形式返回输入几何体的子类型。
- Amazon Redshift (基于JDBC 框架的连接器) 支持在连接期间在 其他参数 字段中提供的其他驱动程序属性。 有关 Amazon Redshift 驱动程序支持的连接属性及其默认值的更多信息,请参阅 “连接属性说明”。
- App Connect 设计师(一般考虑)您可以在 应用程序和应用程序接口 页 上看到触发事件和操作的列表。
对于某些应用,事件和操作取决于环境以及连接器是否支持可配置事件和动态操作发现。 如果应用程序支持可配置事件,那么您会在事件列表下看到 显示更多可配置事件 链接。 如果应用程序支持动态发现操作,那么您会在操作列表下看到 显示更多 链接。
- (一般注意事项) 如果要对一个应用程序使用多个帐户,那么为该应用程序选择操作时显示的字段集可能因不同帐户而异。 在流编辑器中,某些应用程序始终为操作提供一组经过整理的静态字段。 其他应用程序使用动态发现来检索在您所连接的实例上配置的字段集。 例如,如果您有两个帐户用于应用程序的两个实例,那么第一个帐户可能使用可供立即使用的设置。 但是,可以使用额外的定制字段配置第二个帐户。
事件与行动
Amazon Redshift 事件
这些事件用于此应用程序中触发流以开始完成流中的操作的更改。
显示更多可配置事件 :默认显示的事件是通过使用优化连接预先配置的。 配置可通过轮询此应用程序以获取新对象或更新对象来触发流的事件后,将有更多项可用。
Amazon Redshift 操作
您的流程将在此应用程序上完成这些操作。
| 对象 | 操作 | 描述 |
|---|---|---|
| 定制 SQL | 执行定制 SQL | 运行定制 SQL 查询。 支持 DDL 和 DML 语句。 |
其他可用项在您将 App Connect 连接到 Amazon Redshift之后列出。
示例

使用模板为 Amazon Redshift 快速创建流
了解如何使用 App Connect 模板快速创建在 Amazon Redshift上完成操作的流。 例如,前往探索页面并搜索 Amazon Redshift。


使用 App Connect 构建与 集成的 Amazon Redshift 流程。
阅读 IBM® 社区中的博客,了解如何为从 Amazon Redshift 记录中检索到的每位新员工在 Google 表格电子表格中创建新行。 单击 阅读博客 以转至博客。