我想从 S3 加载一个文件,但在加载时,我想在雪花表中添加一个加载日期/时间。我该怎么做?
我的代码目前正在这样做: 复制到“DATABASE”。“PUBLIC”。“TABLENAME” 来自@S3_RAW/FILENAME.csv FILE_FORMAT = '"DATABASE"."PUBLIC"."CSV"' ON_ERROR = 'CONTINUE' PURGE = FALSE;
我要复制到的表名有一个名为 LoadDateTime 的额外列,我只想在加载时填充它 - 这可能吗?
干杯
答案 0 :(得分:1)
Snowflake 的 COPY INTO TABLE 命令有两个“变体”,第一个是“标准”,第二个是“带变换”。
您可以在创建表时使用默认值定义您的列,默认值将在 COPY INTO 命令的“转换”类型的 COPY INTO 命令中得到遵守,例如在以下示例中:
# create a table
CREATE OR REPLACE TABLE my_csv_data (
id INTEGER,
str VARCHAR(100),
dt TIMESTAMP_LTZ DEFAULT CURRENT_TIMESTAMP);
# create a file to load - call it my_csv_data.csv
id,str
1,"Hello World"
2,"lots of good stuff"
3,"goodbye"
# put the file up into your internal stage
PUT file://~/my_csv_data.csv @~/testing123/my_csv_data.csv auto_compress=false;
# this unfortunately puts a NULL value in dt :-(
COPY INTO rich_db.rich_schema.my_csv_data
FROM @~/testing123/my_csv_data.csv
FILE_FORMAT = (type = 'CSV' field_optionally_enclosed_by='"' SKIP_HEADER = 1 error_on_column_count_mismatch=false )
on_error = 'continue';
# but this works, 3 records created with default timestamps :-)
COPY INTO rich_db.rich_schema.my_csv_data (id, str)
FROM (SELECT $1, $2 FROM @~/testing123/my_csv_data.csv )
FILE_FORMAT = (type = 'CSV' field_optionally_enclosed_by='"' SKIP_HEADER = 1)
ON_ERROR = 'continue';
文档链接: https://docs.snowflake.com/en/sql-reference/sql/copy-into-table.html
我希望这有助于...丰富
附言如果这个(或另一个)答案对您有帮助,请花点时间“接受”有帮助的答案 通过单击答案旁边的复选标记将其从“变灰”切换为“已填写”。