BigQuery是否有类似Snowflake COPY INTO的命令?支持S3加载与时间戳注入
BigQuery 实现类似 Snowflake COPY INTO 的自定义字段注入功能
BigQuery 没有和 Snowflake 完全一致的 COPY INTO 语法,但可以通过两种实用方式实现你需要的**注入当前时间戳(batchtimestamp)**的需求,同时完成S3文件的加载。
方法一:临时表中转(适合需要先校验原始数据的场景)
- 先创建临时表加载S3上的原始CSV数据
CREATE OR REPLACE TEMP TABLE temp_raw_data OPTIONS ( format = 'CSV', field_delimiter = ',', quote = '"' ) AS SELECT * FROM `s3://mys3.myfolder/something/blah/*`;
- 往目标表插入数据时追加batchtimestamp字段
INSERT INTO my_project.my_dataset.some_table (batchtimestamp, some_column, some_column2) SELECT CURRENT_TIMESTAMP() AS batchtimestamp, some_column, some_column2 FROM temp_raw_data;
方法二:直接查询插入(简洁高效,适合无需中间校验的场景)
如果是直接覆盖目标表:
CREATE OR REPLACE TABLE my_project.my_dataset.some_table AS SELECT CURRENT_TIMESTAMP() AS batchtimestamp, some_column, some_column2 FROM `s3://mys3.myfolder/something/blah/*` OPTIONS ( format = 'CSV', field_delimiter = ',', quote = '"' );
如果是往已存在的表追加数据:
INSERT INTO my_project.my_dataset.some_table (batchtimestamp, some_column, some_column2) SELECT CURRENT_TIMESTAMP() AS batchtimestamp, some_column, some_column2 FROM `s3://mys3.myfolder/something/blah/*` OPTIONS ( format = 'CSV', field_delimiter = ',', quote = '"' );
说明:CURRENT_TIMESTAMP() 默认返回UTC时区的当前时间,你可以通过设置会话时区调整返回的时间戳时区。
内容的提问来源于stack exchange,提问作者dko512
相关产品推荐
相关产品推荐

