暂存数据¶
本主题提供准备加载数据文件的最佳实践、一般准则和重要注意事项。
本主题内容:
按路径组织数据¶
内部(即 Snowflake)和外部(Amazon S3、Google Cloud Storage 或 Microsoft Azure)暂存区引用都可以包含路径(或 AWS 术语中的 前缀)。在暂存常规数据集时,建议将数据分区到逻辑路径中,这些逻辑路径包括标识详细信息,例如地理位置或其他源标识符,以及写入数据的日期。
通过路径组织数据文件的方式让您可以使用单个命令将分区数据的任意部分复制到 Snowflake 中。这允许您利用并行操作来执行与文件子集匹配的并发 COPY 语句。
例如,如果您按地理位置存储一家北美公司的数据,则可以在路径中包括洲、国家/地区和城市等标识符以及数据写入日期:
Canada/Ontario/Toronto/2016/07/10/05/
United_States/California/Los_Angeles/2016/06/01/11/
United_States/New York/New_York/2016/12/21/03/
United_States/California/San_Francisco/2016/08/03/17/
创建指定暂存区时,可以指定路径的任何部分。例如,使用上述示例路径之一创建外部暂存区:
CREATE STAGE my_stage URL='s3://mybucket/United_States/California/Los_Angeles/' CREDENTIALS=(AWS_KEY_ID='1a2b3c' AWS_SECRET_KEY='4x5y6z');
您还可以在内部用户或表暂存区中暂存文件时添加路径。例如,将 mydata.csv
暂存在 t1
表暂存区的特定路径中:
PUT file:///data/mydata.csv @%t1/United_States/California/Los_Angeles/2016/06/01/11/
加载暂存数据时,将路径缩小到包含数据的最细粒度级别,以提高数据加载性能。
使用以下任一选项进一步限制要加载的文件列表:
如果文件名除了后缀或扩展名之外都匹配,则在路径中包含文件名的匹配部分,例如:
COPY INTO t1 from @%t1/United_States/California/Los_Angeles/2016/06/01/11/mydata;添加 FILES 或 PATTERN 选项(请参阅 用于选择暂存数据文件的选项),例如:
COPY INTO t1 from @%t1/United_States/California/Los_Angeles/2016/06/01/11/ FILES=('mydata1.csv', 'mydata1.csv'); COPY INTO t1 from @%t1/United_States/California/Los_Angeles/2016/06/01/11/ PATTERN='.*mydata[^[0-9]{1,3}$$].csv';