在 AWS Redshift、sql 工作台中手动将数据插入表中

Posted

技术标签:

【中文标题】在 AWS Redshift、sql 工作台中手动将数据插入表中【英文标题】:Inserting Data manually into table in AWS Redshift, sql workbench 【发布时间】:2018-01-17 07:16:29 【问题描述】:

我能够从 SQL 工作台连接到 redshift,并且能够创建一个表,但是当我尝试将值插入表中时,它会抛出以下错误。

由于我使用的是临时架构并且连接将架构显示为公共的,即使我的插入语句是,这仍然是一个问题 插入 tempschema.temp_staging 值

【问题讨论】:

【参考方案1】:

Postgres(以及基于旧版 Postgres 的 Redshift)有一个非常严格的事务概念:要么所有语句都有效,要么没有。

只要事务中的一条语句失败,就需要回滚整个事务。

因此,您只需发出ROLLBACK 命令即可继续。无需重启 SQL Workbench/J。

如果您不想对每个引发错误的语句都这样做,只需在连接配置文件中启用自动提交:

7.3.5。自动提交

此复选框启用/禁用连接的“自动提交”属性。如果启用了自动提交,那么每个 SQL 语句都会在 DBMS 上自动提交。如果禁用此功能,则必须提交任何 DML 语句(UPDATE、INSERT、DELETE...)以使更改永久化。一些 DBMS 也需要提交 DDL 语句(CREATE TABLE,...)。请参阅您的 DBMS 的文档。

Link to manual

我是 SQL Workbench/J 支持的一员

【讨论】:

@Adriaan 我不是垃圾邮件。我只是链接到手册来解释如何启用该选项。但如果这让您满意,我可以删除手册的链接。我只是想提供帮助 链接可以保留,但理想情况下它们对答案不是必需的。这是为了防止链接失效(即:如果链接发生变化,答案仍然相关)。然后您还需要披露您是链接背后组织的一部分(如果您是)。我已经编辑了您的答案以包含所有这些,因此您可以看到 SO 之后的内容。感谢您的贡献!【参考方案2】:

这只是一个临时获得的锁。

    断开工作台与数据源的连接 重启工作台 重新连接到您的数据源。

您可以从这里继续。

【讨论】:

以上是关于在 AWS Redshift、sql 工作台中手动将数据插入表中的主要内容,如果未能解决你的问题,请参考以下文章

AWS Redshift CTAS 查询在集群查询选项卡中完成,但仍从客户端 sql 工作台/j 运行。该表也未创建

如何从 SQL 脚本执行 AWS S3 到 Redshift Copy 命令?

无法通过 redshift DB 中的工作台手动执行功能

如何使用 AWS Redshift Data API 使用 Java 执行 SQL? [关闭]

AWS Redshift SQL 中日期时间的异常日期格式(字符串)

自动化 SQL 脚本运行到 AWS redshift 环境(Dev、preprod 和 prod)