根据Redshift WITH Clause 文档,您可以将WITH子句与INSERT INTO...SELECT语句一起使用.但是在测试时,我收到以下错误.这是不可能的,还是我的语法错了?
CREATE TABLE TestCTEInsert (SomeTimestamp TIMESTAMP);
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT INTO TestCTEInsert
(SomeTimestamp) SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
错误:42601:"插入"或附近的语法错误
有趣的是,它确实支持插入新表,即
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT SomeTimestamp INTO NewTable
SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
命令成功完成(受影响的1行)
编辑:只是为了确认,我在使用INTEGER列而不是TIMESTAMP:时得到相同的错误:
CREATE TABLE TestCTE (SomeInt INTEGER);
WITH CTE AS
(SELECT 1 as SomeInt)
INSERT INTO TestCTEInsert
SELECT SomeInt from CTE;
Run Code Online (Sandbox Code Playgroud)
错误:42601:"插入"或附近的语法错误
sql common-table-expression amazon-web-services amazon-redshift
有没有办法使用一个put-object-tagging cli命令将标记(或一组标记)应用于S3目录中的所有对象?
即如果我有两个文件(test0.txt,test.txt)我可以运行以下两个命令:
>aws s3api put-object-tagging --bucket mybucket --key foo/bar/test0.txt --tagging 'TagSet=[{Key=colour,Value=blue}]'
>aws s3api put-object-tagging --bucket mybucket --key foo/bar/test1.txt --tagging 'TagSet=[{Key=colour,Value=blue}]'
Run Code Online (Sandbox Code Playgroud)
当尝试将文件夹本身作为--key选项传递时,我收到以下错误(因为它必须引用单个对象):
>aws s3api put-object-tagging --bucket mybucket --key foo/bar/ --tagging 'TagSet=[{Key=colour,Value=blue}]
An error occurred (NoSuchKey) when calling the PutObjectTagging operation: The specified key does not exist.
Run Code Online (Sandbox Code Playgroud)
这有解决方法吗?
我在S3中有一个文件,其中包含以下数据:
name,age,gender
jill,30,f
jack,32,m
Run Code Online (Sandbox Code Playgroud)
create external table spectrum.customers (
"name" varchar(50),
"age" int,
"gender" varchar(1))
row format delimited
fields terminated by ','
lines terminated by \n'
stored as textfile
location 's3://...';
Run Code Online (Sandbox Code Playgroud)
查询数据时,我得到以下结果:
select * from spectrum.customers;
name,age,g
jill,30,f
jack,32,m
Run Code Online (Sandbox Code Playgroud)
是否有一种优雅的方法可以跳过标题行作为外部表定义的一部分,类似于tblproperties ("skip.header.line.count"="1")Hive中的选项?或者是我唯一的选择(至少现在)过滤掉标题行作为select语句的一部分?
amazon-web-services amazon-redshift amazon-redshift-spectrum
在下面的示例中,每次运行代码块时,列"SecondColumn"和"ThirdColumn"将始终更新.'FirstColumn'将更新为存储在变量中的值@NumberOfRows(只要它> 0).
我遇到的问题是当@NumberOfRows0或更小时,'FirstColumn'将被设置为NULL.
是否可以调整此值,以便if @NumberOfRows为0或更小,那么'FirstColumn'根本不更新而不是将列设置为NULL?
DECLARE
@NumberOfRows INT = 0
,@NewValue DATETIME = GETDATE()
,@Other INT = 99
BEGIN
UPDATE x
SET x.FirstColumn = (CASE WHEN @NumberOfRows > 0 THEN @NewValue END)
,x.SecondColumn = SYSDATETIMEOFFSET()
,x.ThirdColumn = @Other
FROM TestTable x
WHERE x.ID = 100
END
Run Code Online (Sandbox Code Playgroud)