【问题标题】:Can we COPY External JSON File into Snowflake?我们可以将外部 JSON 文件复制到雪花中吗?
【发布时间】:2020-11-26 10:30:04
【问题描述】:

我正在尝试将外部 JSON 文件从 Azure Blob 存储加载到 Snowflake。我创建了 LOCATION_DETAILS 表,所有列都作为 Variant。当我尝试加载到表中时,出现以下错误:

谁能帮我解决这个问题?

【问题讨论】:

    标签: json load snowflake-cloud-data-platform


    【解决方案1】:

    您需要创建文件格式并提及文件类型和其他规范,如下所示: 创建或替换文件格式 myjsonformat 类型 = 'JSON' strip_outer_array = true;

    然后尝试加载它会工作的文件。

    【讨论】:

    • 谢谢斯里加。我直接使用了该类型并且它起作用了:: 从 'azure://demostorage178.blob.core.windows.net/democontainer/sales.json' 复制到 location_details file_format = (type = "json") on_error = "continue"
    【解决方案2】:

    当我为 Snowflake 使用外部数据时,我喜欢创建链接到 BlobStorage(在本例中)的阶段,这很容易,而且您可以做任何事情都非常简单和透明,就像它是本地数据一样。

    像这样创建链接到 blobstorage 的阶段:

    CREATE OR REPLACE STAGE "<DATABASE>"."<SCHEMA>"."<STAGE_NAME>"
      URL='azure://demostorage178.blob.core.windows.net/democontainer'
      CREDENTIALS=(AZURE_SAS_TOKEN='***********************************************')
      FILE_FORMAT = (TYPE = JSON);
    

    之后,您可以像这样列出 blobstorage fromo snowflake 中的内容:

    list @"<DATABASE>"."<SCHEMA>"."<STAGE_NAME>";
    

    或者像这样:

    use database "<DATABASE>";
    use schema "<SCHEMA>";
    SELECT *  FROM @"STAGE_NAME"/sales.json;
    

    如果你需要创建表,使用这个:

    create or replace table "<DATABASE>"."<SCHEMA>"."<TABLE>" (src VARIANT);
    

    您可以像这样复制您的数据(对于单个文件):

    copy into "<DATABASE>"."<SCHEMA>"."<TABLE>" from @"<STAGE_NAME>"/sales.json;
    

    最后,将它用于您在舞台上获得的所有新数据。注意:您不需要删除以前的数据,它会忽略它并只加载新的。

    copy into "<DATABASE>"."<SCHEMA>"."<TABLE>" from @"STAGE_NAME";
    

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 2021-12-25
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多