gpt4 book ai didi

amazon-redshift - 在 Redshift 中创建后如何更改表模式?

转载 作者:行者123 更新时间:2023-12-03 21:12:28 25 4
gpt4 key购买 nike

Postgre 支持如下操作:

ALTER TABLE name
SET SCHEMA new_schema

该操作在 Redshift 中不起作用。有没有办法做到这一点?

我尝试更新 pg_class 为表设置 relnamespace(schema id),这需要 super 用户帐户,并且 usecatupd 在 pg_shadow 表中为 true。但是我得到了权限被拒绝的错误。唯一可以修改pg系统表的账户是rdsdb。
server=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
------------+----------+-------------+----------+-----------+----------+----------+----------------------------------
rdsdb | 1 | t | t | t | ******** | |
myuser | 100 | t | t | f | ******** | |

所以真的 redshift 不允许这样做吗?

最佳答案

最快的方法 现在如下:

CREATE TABLE my_new_schema.my_table (LIKE my_old_schema.my_table);
ALTER TABLE my_new_schema.my_table APPEND FROM my_old_schema.my_table;
DROP TABLE my_old_schema.my_table;
my_old_schema.my_table 的数据只是重新映射为属于 my_new_schema.my_table在这种情况下。比执行 INSERT INTO 快得多.
重要提示: “数据成功追加到目标表后,源表为空”(来自 AWS docs on ALTER TABLE APPEND),所以要小心 运行 ALTER只声明一次 !
请注意,您可能必须删除并重新创建任何依赖于 my_old_schema.my_table 的 View 。 .更新:如果你经常这样做,你应该使用 WITH NO SCHEMA BINDING 创建你的 View 。他们将继续指向正确的表,而无需重新创建。

关于amazon-redshift - 在 Redshift 中创建后如何更改表模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548928/

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