【发布时间】:2016-04-21 13:24:45
【问题描述】:
在进行 Redshift CREATE TABLE AS 查询时,有没有办法指定数据类型并保持约束?
在下面的示例中,我希望能够创建 table1 的副本,其中列 column2 为 NVARCHAR(500) 类型而不是 VARCHAR(255) 并保留 column1 NOT NULL 约束。
CREATE TABLE test.table1 (column1 INT NOT NULL, column2 VARCHAR(255));
INSERT INTO test.table1
SELECT 1,'foo';
CREATE TABLE test.table2 AS
SELECT column1,CAST(column2 AS NVARCHAR(500))
FROM test.table1;
/* query executes successfully but still creates column2 as VARCHAR(255) and column1 is NULLABLE. */
CREATE TABLE test.table2 (
column1 INT NOT NULL
,column2 NVARCHAR(500)
) AS
SELECT column1
,column2
FROM test.table1;
/* ERROR: 42601: syntax error at or near "as" */
编辑:我知道我可以通过使用正确的数据类型和约束显式创建 test.table2,然后使用 test.table1 中的数据执行 INSERT 语句分两步完成此操作.我很好奇这是否可以在一个 CREATE TABLE AS 查询中完成。任何解决方法或提示将不胜感激! :)
【问题讨论】:
标签: sql amazon-web-services amazon-redshift