雪花->如何插入日期(时间戳)从一个阶段到一个表?
例如:我有以下平面文件
FILE.CSV
ID; DATE ; TEXT
6908402;16-06-2022 13:28:52;DAWEAWEADA
6908403;16-06-2022 ; asdasda
6908404;16-06-2022 13:28:53;helloTest
6908405;16-06-2022 13:28:54;hello%%$%
6908406;16-06-2022 13:28:55;
创建包含
文件的格式CREATE OR REPLACE FILE FORMAT DBO.CSV_SEMICOLON
type = 'CSV'
field_delimiter = ';'
skip_header = 1
encoding=UTF8
;
我将格式分配给新阶段
CREATE STAGE IF NOT EXISTS DBO.STG_FILE file_format = DBO.CSV_SEMICOLON;
我将信息插入到舞台
REMOVE @STG_FILE;
put file://D:TESTFILE.CSV @STG_FILE;
将信息插入到@stage_file后,我想将信息插入到表中。
这就是我遇到问题的地方,因为来自文件的阶段的$2列可以只是日期或时间,我不知道该怎么插入
这个值目标字段的定义如下
Table : dbo.T_FILE
ID = VARCHAR(255)
DATE = TIMESTAMPNTZ
TEXT = VARCHAR(5000)
-------------
-INSERT TABLE
-------------
INSERT INTO DBO.T_FILE(ID, "DATE", TEXT)
SELECT $1, $2, $3,
FROM @STG_FILE WHERE $3 <> ''
非常感谢您的建议
目标表
create temporary table T_FILE (id varchar(255), date_1 TIMESTAMPNTZ, text_1 VARCHAR(5000))
下面查询-
insert into T_FILE select $1,COALESCE(TRY_TO_TIMESTAMP_LTZ($2,'DD-MM-YYYY HH24:MI:SS'),try_TO_TIMESTAMP_LTZ
($2,'dd-mm-yyyy')),$3 from @stg_file;
将插入以下-
select * from t_file;
<表类>ID DATE_1 TEXT_1 tbody><<tr>6908402 2022-06-16 13:28:52.000 DAWEAWEADA 6908403 2022-06-16 00:00:00.000 asdasda 6908404 2022-06-16 13:28:53.000 helloTest 6908405 2022-06-16 13:28:54.000 你好% % $ % 6908406 2022-06-16 13:28:55.000 空 表类>