繁体   English   中英

我们可以将外部 JSON 文件复制到雪花中吗?

[英]Can we COPY External JSON File into Snowflake?

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

从外部 JSON 文件错误详细信息复制到表中

谁可以帮我这个事?

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

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

当我为 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 中的内容:

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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM