목표 : Local에서 Snowflake로 Data를 전송한다.
1. Named Stage를 생성하여 Local에서 Stage로 데이터를 Put 한다.
2. Stage에서 DB Table로 데이터를 적재한다.
3. SnowSQL Log 확인 | SnowSight QueryHistory 확인
$ ./snowsql -a <Snowflake 개인 URL> -u <개인 ID>
다음 명령어로 snowSQL에 접속한다.
> USE ROLE SYSADMIN;
> USE WAREHOUSE COMPUTE_WH;
역할
과웨어하우스
를 설정한다.
> CREATE OR REPLACE DATABASE PRAC1;
데이터베이스
를 생성한다.
- 데이터베이스 생성 시,
바로생성한 데이터베이스
와 그 안의PUBLIC 스키마
를 사용한다.
> CREATE OR REPLACE STAGE LOTOSN
file_format = (type = 'CSV' field_delimiter = ',' skip_header = 1);
Named Stage 생성
stage 설정에
file_format
이 존재한다.
TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML }
- 각 Type의 Options 존재.
Options 참고
> PUT file:///home/chan01/TestZone/start/Prac1.csv @LOTOSN;
> LIST @LOTOSN;
Stage에 Data Put 및 스테이징된 데이터 파일 보기
- @ 문자는 자체가 명명된 스테이지를 식별한다는 점에 유의
> CREATE OR REPLACE TABLE STTOSN
(ID int,
NAME varchar(32)
);
적재할 테이블 생성
- 실습할 데이터가
ID
:NAME
형식이므로 맞춰서 생성
// COPY INTO 시, Stage에 데이터 남아있음.
> COPY INTO LOSTSN FROM @LOTOSN;
// COPY INTO 시, Stage 데이터 삭제.
> COPY INTO LOSTSN FROM @LOTOSN PURGE = TRUE;
> SELECT * FROM <TABLE>
> LIST @LOTOSN;
> REMOVE @LOTOSN;
> TRUNCATE STTOSN;
> SELECT * FROM STTOSN;
> DROP TABLE STTOSN;
> DROP DATABASE PRAC1;
$ cat ~/.snowsql/log
log
2023-12-29 00:44:17,884 (7593/MainThread) snowflake.connector.connection INFO connection:1171 - This connection is in OCSP Fail Open Mode. TLS Certificates would be checked for validity and revocation status. Any other Certificate Revocation related exceptions or OCSP Responder failures would be disregarded in favor of connectivity. 2023-12-29 00:44:18,201 (7593/Thread-1) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ DATABASES] 2023-12-29 00:44:18,203 (7593/Thread-2) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ WAREHOUSES] 2023-12-29 00:44:18,207 (7593/Thread-3) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ ROLES] 2023-12-29 00:44:18,211 (7593/Thread-4) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ USERS] 2023-12-29 00:44:18,317 (7593/Thread-1) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 00:44:18,346 (7593/Thread-1) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 2 2023-12-29 00:44:18,394 (7593/Thread-2) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 00:44:18,396 (7593/Thread-2) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 00:48:00,178 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 00:48:00,184 (7593/Thread-49) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ DATABASES] 2023-12-29 00:48:00,189 (7593/Thread-50) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ WAREHOUSES] 2023-12-29 00:48:00,193 (7593/Thread-51) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ ROLES] 2023-12-29 00:48:00,196 (7593/Thread-52) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ USERS] 2023-12-29 00:48:00,282 (7593/Thread-49) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:06:02,556 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:14:19,660 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [CREATE OR REPLACE TABLE STTOSN;] 2023-12-29 01:14:19,843 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:14:19,846 (7593/MainThread) __main__ ERROR eventloop:813 - error with sql: 'CREATE OR REPLACE TABLE STTOSN;' Traceback (most recent call last): File "eventloop.py", line 757, in run_cli File "snowflake/cli/sqlexecute.py", line 491, in run File "snowflake/cli/sqlexecute.py", line 574, in execute_normal_sql File "snowflake/connector/cursor.py", line 1132, in execute File "snowflake/connector/errors.py", line 290, in errorhandler_wrapper File "snowflake/connector/errors.py", line 345, in hand_to_other_handler File "snowflake/connector/errors.py", line 221, in default_errorhandler snowflake.connector.errors.ProgrammingError: 001003 (42000): 01b14d4a-0000-5691-0000-36c50001b246: SQL compilation error: ~ ~ ~ snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:20:18,740 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [REMOVE @LOTOSN;] 2023-12-29 01:20:18,884 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:20:18,885 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:01,258 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [TRUNCATE STTOSN;] 2023-12-29 01:21:01,472 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:01,474 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:06,333 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [SELECT * FROM STTOSN;] 2023-12-29 01:21:06,406 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:06,408 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 0 2023-12-29 01:21:16,538 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [DROP TABLE STTOSN;] 2023-12-29 01:21:16,625 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,626 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:16,632 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ DATABASES] 2023-12-29 01:21:16,635 (7593/Thread-428) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ WAREHOUSES] 2023-12-29 01:21:16,640 (7593/Thread-429) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ ROLES] 2023-12-29 01:21:16,644 (7593/Thread-430) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ USERS] 2023-12-29 01:21:16,723 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,724 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 3 2023-12-29 01:21:16,725 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ SCHEMAS IN DATABASE PRAC1] 2023-12-29 01:21:16,829 (7593/Thread-430) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,831 (7593/Thread-430) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 2 2023-12-29 01:21:16,834 (7593/Thread-429) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,840 (7593/Thread-429) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 8 2023-12-29 01:21:16,836 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,841 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 2 2023-12-29 01:21:16,842 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ TABLES IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:16,838 (7593/Thread-428) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,844 (7593/Thread-428) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:16,896 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,897 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 0 2023-12-29 01:21:16,898 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ VIEWS IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:16,954 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:16,955 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 0 2023-12-29 01:21:16,957 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ USER FUNCTIONS IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:17,012 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:17,014 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 0 2023-12-29 01:21:17,015 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ STAGES IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:17,075 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:17,076 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:17,077 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ COLUMNS IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:17,133 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:17,134 (7593/Thread-427) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 0 2023-12-29 01:21:25,293 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [DROP DATABASE PRAC1;] 2023-12-29 01:21:25,392 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,393 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:25,400 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ DATABASES] 2023-12-29 01:21:25,404 (7593/Thread-445) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ WAREHOUSES] 2023-12-29 01:21:25,407 (7593/Thread-446) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ ROLES] 2023-12-29 01:21:25,410 (7593/Thread-447) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ USERS] 2023-12-29 01:21:25,474 (7593/Thread-446) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,476 (7593/Thread-446) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 8 2023-12-29 01:21:25,481 (7593/Thread-445) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,483 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,485 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 2 2023-12-29 01:21:25,485 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ SCHEMAS IN DATABASE PRAC1] 2023-12-29 01:21:25,489 (7593/Thread-447) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,491 (7593/Thread-447) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 2 2023-12-29 01:21:25,484 (7593/Thread-445) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:21:25,557 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,559 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ TABLES IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:25,614 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,617 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ VIEWS IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:25,678 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,681 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ USER FUNCTIONS IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:25,736 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,738 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ STAGES IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:25,797 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:21:25,800 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1028 - query: [SHOW /* snowsql */ COLUMNS IN SCHEMA PRAC1.PUBLIC] 2023-12-29 01:21:25,865 (7593/Thread-444) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:23:41,483 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [quit;] 2023-12-29 01:23:41,572 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:23:41,575 (7593/MainThread) __main__ ERROR eventloop:813 - error with sql: 'quit;' Traceback (most recent call last): File "eventloop.py", line 757, in run_cli File "snowflake/cli/sqlexecute.py", line 491, in run File "snowflake/cli/sqlexecute.py", line 574, in execute_normal_sql File "snowflake/connector/cursor.py", line 1132, in execute File "snowflake/connector/errors.py", line 290, in errorhandler_wrapper File "snowflake/connector/errors.py", line 345, in hand_to_other_handler File "snowflake/connector/errors.py", line 221, in default_errorhandler snowflake.connector.errors.ProgrammingError: 001003 (42000): 01b14d53-0000-5691-0000-36c50001b2c6: SQL compilation error: syntax error line 1 at position 0 unexpected 'quit'. 2023-12-29 01:23:47,656 (7593/MainThread) snowflake.cli.sqlexecute INFO sqlexecute:395 - rollback 2023-12-29 01:23:47,656 (7593/MainThread) snowflake.connector.cursor INFO cursor:1028 - query: [ROLLBACK] 2023-12-29 01:23:47,726 (7593/MainThread) snowflake.connector.cursor INFO cursor:1041 - query execution done 2023-12-29 01:23:47,727 (7593/MainThread) snowflake.connector.cursor INFO cursor:1205 - Number of results in first chunk: 1 2023-12-29 01:23:47,729 (7593/MainThread) snowflake.connector.connection INFO connection:718 - closed 2023-12-29 01:23:47,764 (7593/MainThread) snowflake.connector.connection INFO connection:724 - No async queries seem to be running, deleting session
$ cat .snowsql/history
history
# 2023-12-29 09:48:00.020218 +USE ROLE SYSADMIN; # 2023-12-29 09:48:17.114744 +USE WAREHOUSE COMPUTE_WH; # 2023-12-29 09:51:21.872786 +CREATE OR REPLACE DATABASE PRAC1; # 2023-12-29 09:56:00.848084 +CREATE OR REPLACE STAGE LOTOSN +file_format = (type = 'CSV' field_delimiter = ',' skip_header = 1); # 2023-12-29 10:05:44.266951 +PUT file:///home/chan01/TestZone/start/Prac1.csv @LOTOSN; # 2023-12-29 10:06:02.446232 +LIST @LOTOSN; # 2023-12-29 10:14:19.656538 +CREATE OR REPLACE TABLE STTOSN; # 2023-12-29 10:14:51.521931 +CREATE OR REPLACE TABLE STTOSN +(ID int, +NAME varchar(32) +); # 2023-12-29 10:17:42.254603 +COPY INTO STTOSN FROM @LOTOSN; # 2023-12-29 10:18:34.799037 +SELECT * FROM STTOSN; # 2023-12-29 10:20:12.275897 +LIST @LOTOSN; # 2023-12-29 10:20:18.738535 +REMOVE @LOTOSN; # 2023-12-29 10:21:01.256302 +TRUNCATE STTOSN; # 2023-12-29 10:21:06.330875 +SELECT * FROM STTOSN; # 2023-12-29 10:21:16.535432 +DROP TABLE STTOSN; # 2023-12-29 10:21:25.290777 +DROP DATABASE PRAC1; # 2023-12-29 10:23:41.480506 +quit; # 2023-12-29 10:23:47.654088 +!quit;
또는 SnowSight에서,