在教程“教程:使用复制从本地文件系统批量加载”中,my_stage和my_table权限有什么区别?

问题描述 投票:0回答:1

我开始阅读第一篇教程,了解如何从本地文件将数据加载到Snowflake。

这是我到目前为止设置的:

CREATE WAREHOUSE mywh;
CREATE DATABASE Mydb; 
Use Database mydb;


CREATE ROLE ANALYST;

grant usage on database mydb to role sysadmin;
grant usage on database mydb to role analyst;


grant usage, create file format, create stage, create table on schema mydb.public to role analyst;

grant operate, usage on warehouse mywh to role analyst;

//tutorial 1 loading data
CREATE FILE FORMAT mycsvformat
   TYPE = "CSV"
   FIELD_DELIMITER= ','
   SKIP_HEADER = 1;

CREATE FILE FORMAT myjsonformat
   TYPE="JSON"
   STRIP_OUTER_ARRAY = true; 
   
//create stage
CREATE OR REPLACE STAGE my_stage
   FILE_FORMAT = mycsvformat;
   
//Use snowsql for this and make sure that the role, db, and warehouse are seelcted: put file:///data/data.csv @my_stage;
  
   
 // put file on stage
 PUT file://contacts.csv @my
 
 List @~;
 
 list @%mytable;
   

然后在运行时在我的活动Snowsql中:

Put file:///Users/<user>/Documents/data/data.csv @my_table;

我已确认我具有正确的Accountadmin角色:002003(02000):SQL编译错误:阶段'MYDB.PUBLIC.MY_TABLE'不存在或未被授权。

因此,我尝试在Snowsql中创建表并成功:

create or replace table my_table(id varchar, link varchar, stuff string);

我在运行后仍然遇到此错误:

Put file:///Users/<>/Documents/data/data.csv @my_table;

002003(02000):SQL编译错误:阶段'MYDB.PUBLIC.MY_TABLE'不存在或未被授权。

在这种情况下,将文件放入my_table和my_stage有什么区别?感谢您的帮助!

编辑:

CREATE OR REPLACE TABLE myjsontable(json variant);
 
COPY INTO myjsontable
  FROM @my_stage/random.json.gz
  FILE_FORMAT = (TYPE= 'JSON')
  ON_ERROR = 'skip_file';
 
 CREATE OR REPLACE TABLE save_copy_errors AS SELECT * FROM TABLE(VALIDATE(myjsontable, JOB_ID=>'enterid'));
 SELECT * FROM SAVE_COPY_ERRORS;
 //error for random: Error parsing JSON: invalid character outside of a string: '\\'
 //no error for generated
 
 SELECT * FROM Myjsontable;
 
REMOVE @My_stage pattern = '.*.csv.gz';


REMOVE @My_stage pattern = '.*.json.gz';

//yay your are done!
snowflake-data-warehouse
1个回答
0
投票

put命令将文件从本地驱动器复制到舞台。您应该将其放置在舞台上,而不是放在桌子上。

put file:///Users/<>/Documents/data/data.csv @my_stage;

复制命令从舞台上加载它。

© www.soinside.com 2019 - 2024. All rights reserved.