雪花不接受批量加载的文件格式

Posted

技术标签:

【中文标题】雪花不接受批量加载的文件格式【英文标题】:Snowflake Not Accepting File Format In Bulk Load 【发布时间】:2020-04-08 07:55:45 【问题描述】:

我正在为我们的数据管道创建一些新的 ETL 任务。我们目前有数百个来自各种 S3 存储桶的加载数据。

所以它会是这样的:

create or replace stage ETL_STAGE url='s3://bucketname/'
  file_format = csv_etl;

create or replace file format csv_etl
  type = 'CSV'
  field_delimiter = ','
  skip_header = 1
  FIELD_OPTIONALLY_ENCLOSED_BY='"'

copy into db.schema.table
  from @ETL_STAGE/Usage
  pattern='/.*[.]csv'
  on_error = 'continue'

但是,每当我使用它时,我的文件格式不仅没有转义封闭的双引号,甚至没有跳过标题,所以我得到了这个:

对此感到非常困惑,因为我 99% 确定此处的格式选项是正确的。

+-------------------+----------+----------------+---------------------+-------------------+
| "Usage Task Name" |  "Value" |  "etl_uuid"    | "etl_deviceServer"  |  "etl_timestamp"  |
| "taskname"        |  "0"     | "adfasdfasdf"  | "hostserverip"      | "2020-04-06 2124" |
+-------------------+----------+----------------+---------------------+-------------------+

【问题讨论】:

【参考方案1】:

通过包含 file_format 运行以下命令。这在加载文件时应用了文件格式:

  copy into db.schema.table
  from @ETL_STAGE/Usage
  pattern='/.*[.]csv'
  on_error = 'continue'
  file_format = csv_etl;

【讨论】:

但为什么不在舞台层面呢?

以上是关于雪花不接受批量加载的文件格式的主要内容,如果未能解决你的问题,请参考以下文章

如何通过GCS将GA360表从Big query导出到雪花作为json文件而不丢失数据?

插入时的雪花微分区

如何把网页上的PHP图片下载后成为JPG格式

如何在雪花中将时间戳转换为日期

使用 Avro 文件批量复制到 Amazon Redshift 中的异常处理

Python实现批量压缩文件/文件夹——zipfile