Postgresql 使用Talend将yyyyMMdd字符串插入日期列

Postgresql 使用Talend将yyyyMMdd字符串插入日期列,postgresql,date,talend,Postgresql,Date,Talend,我有以下情况: 包含日期类型列date的表的PostgreSQL数据库 来自分隔的.txt文件的字符串,输出:20170101 我想在日期类型列中插入字符串 到目前为止,我尝试了以下方法,但结果/错误参差不齐: 解释:这一点相当明显 可以查看解析为“2017-01-01 00:00:00.000000+01:00:00”的字符串 当我试图直接执行查询时,我得到一个“SQL错误:42601:Error:Syntax Error,位于“00”位置194” 其他观察/尝试: 有趣的是,如果我

我有以下情况:

  • 包含日期类型列date的表的PostgreSQL数据库

  • 来自分隔的.txt文件的字符串,输出:20170101

我想在日期类型列中插入字符串

到目前为止,我尝试了以下方法,但结果/错误参差不齐:


解释:这一点相当明显


可以查看解析为“2017-01-01 00:00:00.000000+01:00:00”的字符串

当我试图直接执行查询时,我得到一个“SQL错误:42601:Error:Syntax Error,位于“00”位置194”


其他观察/尝试:

有趣的是,如果我在查询中使用'20170101'作为一个字符串,请参见下文

INSERT INTO "data" ("location_id","date","avg_winddirection","avg_windspeed","avg_temperature","min_temperature","max_temperature","total_hours_sun","avg_precipitation") VALUES (209,'20170101',207,7.7,NULL,NULL,NULL,NULL,NULL)
我还尝试将数据库日期列的模式更改为字符串。它产生以下结果:

Batch entry 0 INSERT INTO "data" ("location_id","date","avg_winddirection","avg_windspeed","avg_temperature","min_temperature","max_temperature","total_hours_sun","avg_precipitation") VALUES (209,20170101,207,7.7,NULL,NULL,NULL,NULL,NULL) was aborted.  Call getNextException to see the cause.
此查询也不能直接工作,因为日期不在单引号之间


我错过了什么或没有做什么? (我在2-3天前开始学习使用Talend)

编辑// 我的工作和tMap的截图

编辑//这似乎不是日期格式问题,而是Talend到PostgreSQL的连接问题

编辑//
修正:这当然是一个愚蠢的简单问题/解决方案。数据库名称和架构名称字段为空。。。所以它基本上不知道连接到哪里,你不需要做任何事情就可以将类似于
20170101
的字符串插入到日期列中。PostgreSQL将为您处理它—它只是ISO 8601的日期格式

CREATE TABLE foo ( x date );
INSERT INTO foo (x) VALUES ( '20170101' );

如果有什么问题的话,这只是一个talend问题。

在日期列中插入类似于
20170101
的字符串不必做任何事情。PostgreSQL将为您处理它—它只是ISO 8601的日期格式

CREATE TABLE foo ( x date );
INSERT INTO foo (x) VALUES ( '20170101' );
如果有什么问题的话,这只是泰伦德的问题

[…](209,2017-01-01 00:00:00.000000+01:00:00,207,7.7,空,空,空,空)[…]

若Talend自己不知道将时间戳传递到查询中要求它是单引号的,那个么若可能的话,您需要这样做

[…](209,2017-01-01 00:00:00.000000+01:00:00,207,7.7,空,空,空,空)[…]


若Talend自己不知道将时间戳传递到查询中需要单引号,那个么若可能的话,您需要这样做。

修复:这当然是一个愚蠢的简单问题/解决方案。数据库名称和架构名称字段为空。。。所以它基本上不知道连接到哪里,这就是为什么我得到了0批错误,当我在调试时深入时,我发现它找不到表,说明关系不存在。

修复:这当然是一个愚蠢的简单问题/解决方案。数据库名称和架构名称字段为空。。。所以它基本上不知道连接到哪里,这就是为什么我得到了批处理0错误,当我深入调试时,我发现它找不到表,说明关系不存在。

像这样尝试

输入文件中的数据为:20170101(字符串格式)

然后将tMap设置为,

结果如下:

像这样试试

输入文件中的数据为:20170101(字符串格式)

然后将tMap设置为,

结果如下:


事实上,我也得出了这个结论。我希望有塔伦德经验/知识的人会出现。这确实是塔伦德的问题。但这是一个完全不同的问题。它没有数据库名和模式名,所以它不知道连接到哪里。我希望有塔伦德经验/知识的人会出现。这确实是塔伦德的问题。但这是一个完全不同的问题。它没有数据库名和模式名,所以不知道连接到哪里。这就是问题所在。我刚开始学泰伦德,所以我;我不知道如何“手动”添加单引号,就是这样。我刚开始学泰伦德,所以我;我不知道如何“手动”添加单个引号Talend架构中是否正确定义了row1.YYYYMMDD的数据类型?我在两个架构中都尝试了string和date。能否发布Talend作业的屏幕截图?作业和tMap:能否尝试更改tMap中列日期的DatePattern?Talend架构中是否正确定义了row1.YYYYMMDD的数据类型?我尝试了两个架构上的字符串和日期。您可以发布Talend作业的屏幕截图吗?作业和tMap:您可以尝试更改tMap中列日期的日期模式吗?
CREATE TABLE foo ( x date );
INSERT INTO foo (x) VALUES ( '20170101' );