【发布时间】:2020-04-28 21:00:38
【问题描述】:
我有一个 CSV,其中有一列包含基本日期(如 2020 年 1 月 11 日)。
我在FILELOADER中指定了以下格式规范:
DATE_FORMAT = 'MM/DD/YYYY'-
TIMESTAMP_FORMAT = 'MM/DD/YYYY HH24:MI'。
这应该使用DATE_FORMAT 为日期列创建匹配项。但是,Snowflake 看到日期列并将其标识为时间戳列。由于该列中不存在时间,因此无法匹配 TIMESTAMP_FORMAT 并且加载失败。
为什么Snowflake 选择将我的日期列标识为时间戳列?
这是我正在使用的完整文件格式规范:
CREATE OR REPLACE FILE FORMAT jobstats_csv_format
TYPE = CSV FIELD_DELIMITER = ',' SKIP_HEADER = 1 NULL_IF = ('NULL', 'null') EMPTY_FIELD_AS_NULL = true COMPRESSION = AUTO FIELD_OPTIONALLY_ENCLOSED_BY='"' DATE_FORMAT = 'MM/DD/YYYY' TIMESTAMP_FORMAT = 'MM/DD/YYYY HH24:MI';
...这个文件格式规范在我的舞台定义中被引用...
CREATE OR REPLACE STAGE tct_jobstats_input_stage
URL='azure://blahblahblah.blob.core.windows.net/tct-filefly-input/'
CREDENTIALS=(AZURE_SAS_TOKEN='blahblahblahblahblah')
FILE_FORMAT = jobstats_csv_format;
...以及我用来加载它的代码...
try
{
var load_cmd = "COPY INTO LifelineRemoved ";
load_cmd += "FROM @tct_jobstats_input_stage ";
load_cmd += "PATTERN='.*Lifeline Removed During Date Range.*[.]csv.*';";
var load_stmt = snowflake.createStatement( { sqlText: load_cmd } );
load_stmt.execute();
}
catch (err)
{
result = "Failed: Code: " + err.code + "\n State: " + err.state;
result += "\n Message: " + err.message;
result += "\nStack Trace:\n" + err.stackTraceTxt;
}
... 这是来自 CSV 的(标题 + 单)数据行,无法加载。 帐户,客户状态,认证日期,lifelinermoveddate,lifelinermovedreason,电话号码 1,linestatus,激活日期,断开日期,名字,姓氏,serviceaddress1,serviceaddress2,servicecity,servicestate,servicezip,Column1 123456,Active,11/26/2019,12/1/2019,DSN D Denied 90-5 客户有他们的 LifeL,(321) 5551212,Active,11/26/2019,,JOHN,DOE,1524 示例 ST ,,弗雷斯诺,CA,93706,
【问题讨论】:
标签: snowflake-cloud-data-platform