Snowflake cloud data platform Snowflake在加载CSV时选择时间戳格式而不是日期格式
我有一个CSV,其中有一列包含基本日期,如2020年11月1日 我在文件加载器中指定了以下格式规范: 日期\格式='MM/DD/YYYY' 时间戳格式='MM/DD/YYYY HH24:MI'。 这将使用date_格式为日期列创建匹配项。但是,Snowflake会看到日期列并将其标识为时间戳列。由于该列中不存在时间,因此无法匹配时间戳格式,加载失败 为什么雪花选择将我的日期列标识为时间戳列 以下是我使用的完整文件格式规范:Snowflake cloud data platform Snowflake在加载CSV时选择时间戳格式而不是日期格式,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我有一个CSV,其中有一列包含基本日期,如2020年11月1日 我在文件加载器中指定了以下格式规范: 日期\格式='MM/DD/YYYY' 时间戳格式='MM/DD/YYYY HH24:MI'。 这将使用date_格式为日期列创建匹配项。但是,Snowflake会看到日期列并将其标识为时间戳列。由于该列中不存在时间,因此无法匹配时间戳格式,加载失败 为什么雪花选择将我的日期列标识为时间戳列 以下是我使用的完整文件格式规范: CREATE OR REPLACE FILE FORMAT jobsta
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的单行数据,无法加载。
帐户、customerstatus、certifieddate、LifeLineRemoveDate、lifelineremovedreason、电话号码1、线路状态、激活日期、断开连接日期、名字、姓氏、服务地址1、服务地址2、服务城市、服务状态、服务邮编、列1
123456,有效,2019年11月26日,2019年12月1日,DSN D拒绝90-5客户的生命线,321 5551212,有效,2019年11月26日,美国能源部约翰,加利福尼亚州弗雷斯诺示例街1524号,93706
。。。最后我看到的错误是。。。
时间戳\u格式目前是一种预览功能,因此可能尚未准备好用于生产。作为一种解决方法,您可以使用“从中选择”将副本复制到mytable中。。。模式对每个字段应用自定义转换。或加载为文本并在之后转换。最后,如果您能提供代码和示例数据,它总是有帮助的。我尝试用您的规范加载示例数据,它在WebUI中运行良好 这就是我的示例数据的外观 创建以下文件格式和定义的日期/TS格式 当您从WebUI加载数据时,它可以完美地工作 使用正确的文件,定义数据类型的格式看起来也很完美 如果文件格式定义的日期和时间戳不正确,则会出现以下错误
检查表定义以确保列类型与预期数据匹配。在我的例子中,我有一个应该是日期的列的时区列类型。我尝试使用上面的WebUI选择创建一个新的文件格式。不幸的是,对于我的样本数据,我仍然有同样的问题。现在,我将上传更好的示例数据和我为文件格式配置所做的选择。为什么不在SQL命令中使用选项FILEFORMAT=>MY\u file\u format?我没有看到您命令中的文件格式选项。我想这是因为在我的命令中我指的是stage,在stage定义中,我指定了文件格式。我会更新。我似乎无法区分触发雪花错误识别文件中日期的数据之间的差异,因为它在所有行上都失败了。我想我希望你能对代码有所了解。也许你建议在查询中应用一个转换,将日期重新格式化为使用破折号,可能会使事情正常工作。这是一个解决办法,现在就足够了。但可能需要为此提交一份bug报告。
01/09/2020,01/09/2020 23:59,9th Jan
01/10/2020,01/10/2020 22:58,10th Jan
01/11/2020,01/11/2020 21:57,11th Jan
01/12/2020,01/12/2020 20:56,12th Jan