使用 Talend 在 SQL Server 和 Postgres 之间转换日期

     2023-03-29     25

关键词:

【中文标题】使用 Talend 在 SQL Server 和 Postgres 之间转换日期【英文标题】:Converting dates between SQL Server and Postgres with Talend 【发布时间】:2014-09-27 04:25:15 【问题描述】:

我有一个 Talend 作业,它在 SQL Server 数据库上运行查询,然后将选定的数据写入 Postgres 数据库。我正在使用 tMap 组件进行映射。 SQL Server 日期类似于 2014-01-20 11:34:26.0(在 Talend 中配置为 '"yyyy-MM-dd HH:mm:ss.SSS")和 Postgres 日期 yyyy-MM-dd。

当我运行作业时,出现以下异常:

[统计]已连接 批处理条目 0 INSERT INTO "criticalcareepisodes" ("GivenName","FamilyName","height","weight","mrn","id","admissiondate") VALUES ("Adam","Apple",100,200.0,123456 ,nextval('CriticalCareEpisodes_id_seq'),2009-11-10 21:30:00.000000 +11:00:00) 被中止。调用 getNextException 查看原因。 [统计] 断线 Job ExtractSLICCriticalCareEpisode 于 2014 年 9 月 27 日 14:06 结束。 [退出代码=0]

似乎由于某种原因,日期的格式没有像我预期的那样。该异常显然与尝试将日期/时间推入 Postgres 日期类型有关——至少我是这么认为的。我确信我在这里遗漏了一些明显的东西,但我们将不胜感激。

我添加了一些可能有帮助的图片:

【问题讨论】:

您能否发布您的工作截图,包括数据库输出组件配置和架构? @ydaetskcoR 我添加了几张图片。我希望这会有所帮助? 【参考方案1】:

Ken Hampson 的 answer 涵盖了问题的 Postgres 部分:您正试图将时间戳插入日期字段。

问题是您试图在架构中日期类型配置的日期模式部分中指定预期格式 (yyyy-MM-dd)。 Talend 实际上始终保存完整的日期对象,日期模式仅用于格式化目的,使用 Talend 组件(例如 tLogRow)然后以所选格式打印日期。

要将日期正确转换为格式化字符串,以便将其发送到 Postgres(这会将字符串隐式转换为日期),您需要将 row1.CCDateAdmit 替换为 TalendDate.formatDate("yyyy-MM-dd",row1.CCDateAdmit)

【讨论】:

谢谢 - 这是一个很大的帮助!对于其他人,我添加了一个空测试 row1.CCDateAdmit==null?null:TalendDate.formatDate("yyyy-MM-dd",row1.CCDateAdmit)【参考方案2】:

我不熟悉 Talend 的软件,但从 Postgres 的角度来看,INSERT 似乎正在尝试插入 timestamp使用非字符串文字 2009-11-10 21:30:00.000000 +11:00:00,这在 Postgres 中是无效的。 timestamp 字面量需要以字符串形式指定(除其他方法外,但不能像日志输出中指示的那样是非字符串形式)。

可以以字符串形式执行类似的操作,即'2009-11-10 21:30:00.000000 +11:00'

为什么 Talend 软件会发送类似 timestamp 的非字符串形式,这可能是该软件中的一个错误,尽管从可用信息中并不清楚。

这是一个sqlfiddle,它更详细地说明了我的意思。

请注意,这假设日志将正确分隔字符串,因为它们应该在 INSERT 查询中,这在日志中并不完全清楚(即 AdamApple 字符串与否?如前所述,它们不是,但这很奇怪。

如果它们实际上是字符串,那么下一步就是准确了解异常是什么,显然您需要调用getNextException 来确定。

【讨论】:

抱歉,是的,它们是字符串 - 我已经修改了问题。感谢您提供 SQL 示例。我实际上想要做的是从 MS SQL 服务器获取日期时间类型,并在 Postgres 服务器上转换为仅日期(不是时间组件)。我认为 Talend 试图在日期中插入时间戳是正确的 - 但我不知道为什么。

在 Talend 中实现 UDF 和 Pig 脚本逻辑

...度。我的UDF工作正常。我还编写了一个Pig脚本来在HDFS上使用上述jar。现在我想将此代码与TalendforBigData集成。我怎样才能做到这一点。UDF中的ja 查看详情

在 SQL Server 2012 上使用 sql 数据库和在 SQL Server Express 2012 上使用同一个数据库是一样的吗?

】在SQLServer2012上使用sql数据库和在SQLServerExpress2012上使用同一个数据库是一样的吗?【英文标题】:WorkingwithasqldatabaseonSQLServer2012andworkwiththesamedatabaseonSQLServerExpress2012isthesame?【发布时间】:2013-10-2418:49:45【问题描述】:我有关于... 查看详情

使用talend中的thiverow组件运行多个配置单元查询

您好我想通过单个组件调整多个配置单元查询。通过tHiveRow我可以运行单个查询但无法一次运行多个查询。我知道在通过以下链接http://www.vikramtakkar.com/2013/05/example-to-execute-multiple-sql-queries.html后我们可以运行多个sql查询但任何人... 查看详情

使用 SQL Server Express 和 SQL Server CE

】使用SQLServerExpress和SQLServerCE【英文标题】:UsingSQLServerExpressandSQLServerCE【发布时间】:2013-01-0304:34:15【问题描述】:我正在编写一个应用程序,希望用户选择SQLServerCE或SQLServerExpress数据库作为背景。然而,这些使用单独的引用... 查看详情

在 SQL Server 中使用纬度和经度查找两点之间的距离

】在SQLServer中使用纬度和经度查找两点之间的距离【英文标题】:FinddistancebetweentwopointsusinglatitudeandlongitudeinSQLServer【发布时间】:2021-09-1611:55:50【问题描述】:我一直在看这个问题,只是想知道这是否可以在SQLServer中完成。Findd... 查看详情

如何在sql server中使用if语句和case

】如何在sqlserver中使用if语句和case【英文标题】:Howtouseifstatementalongwithcaseinsqlserver【发布时间】:2013-02-1814:07:38【问题描述】:我的源表(国家代码、子代码)中的列很少,这些列的值是SubcodesCountryCodes100111110015661002485100458610147... 查看详情

开源etl工具比较,kettle和talend,都有啥优势和劣势

...服务器(Carte),数据库存储库(repository)(Kitchen)或者直接使用IDE(Spoon)。TalendOpenStudio是Talend开发的ETL工具——Talend是一家主营数据集成和数据管理解决方案的企业。Talend采用用户友好型,综合性很强的IDE(类似于PentahoKettle的Spoon... 查看详情

在 SQL Server 和 ServiceStack.OrmLite 中使用架构名称

】在SQLServer和ServiceStack.OrmLite中使用架构名称【英文标题】:UsingschemanameswithSQLServer&ServiceStack.OrmLite【发布时间】:2012-12-0609:39:39【问题描述】:有人知道如何将正确的Alias属性应用于具有模式名称的查询表吗?我有一张名为ac... 查看详情

开源etl工具比较,kettle和talend,都有啥优势和劣势

...服务器(Carte),数据库存储库(repository)(Kitchen)或者直接使用IDE(Spoon)。TalendOpenStudio是Talend开发的ETL工具——Talend是一家主营数据集成和数据管理解决方案的企业。Talend采用用户友好型,综合性很强的IDE(类似于PentahoKettle的Spoon... 查看详情

如何使用 Windows 和 SQL 身份验证使用 SQL Server Management Studio 连接到 SQL Server

】如何使用Windows和SQL身份验证使用SQLServerManagementStudio连接到SQLServer【英文标题】:HowtoconnecttoSQLServerusingSQLServerManagementStudiousingWindowsandSQLAuthentication【发布时间】:2015-04-2722:23:53【问题描述】:我是SQLServer2012的新手。我已在本... 查看详情

Azure SQL Server 备份:需要使用 ARM 模板在 Azure SQL Server 备份中取消注册容器和重新转移数据库

】AzureSQLServer备份:需要使用ARM模板在AzureSQLServer备份中取消注册容器和重新转移数据库【英文标题】:AzureSQLServerBackup:NeedtoUnRegisterContainersandRedisoverDBsinAzureSQLServerBackupusingARMtemplates【发布时间】:2021-11-1004:41:51【问题描述】:我... 查看详情

我啥时候应该在 sql server 中使用表变量和临时表?

】我啥时候应该在sqlserver中使用表变量和临时表?【英文标题】:WhenshouldIuseatablevariablevstemporarytableinsqlserver?我什么时候应该在sqlserver中使用表变量和临时表?【发布时间】:2012-08-0503:58:52【问题描述】:我正在了解更多关于表... 查看详情

SQL 在 SQL Server 和 Oracle 中返回固定数据

...个固定的值/行而不需要表,它必须与Oracle和SqlServer一起使用。例如对于Oracle,我知道我可以使用:select\'O\'ASINDICATORfromDUAL;但这在 查看详情

如何在 SQL Server 中使用 WEEK 和 DAYOFWEEK 函数 [重复]

】如何在SQLServer中使用WEEK和DAYOFWEEK函数[重复]【英文标题】:HowtouseWEEKandDAYOFWEEKfunctionsinSQLServer[duplicate]【发布时间】:2019-02-0418:50:54【问题描述】:我有一个用MySQL编写的简单代码,它根据特定日期返回周数:SQLServer中是否有任... 查看详情

在 sql server 中使用 % 通配符和 'in' 运算符

】在sqlserver中使用%通配符和\\\'in\\\'运算符【英文标题】:use%wildcardwith\'in\'operatorinsqlserver在sqlserver中使用%通配符和\'in\'运算符【发布时间】:2013-12-3116:36:14【问题描述】:我有一个存储过程,我将逗号分隔值列表作为@At1传递Cre... 查看详情

如何使用 talend 在 snwoflake 表上执行 SCD 1

】如何使用talend在snwoflake表上执行SCD1【英文标题】:HowtoperformSCD1onsnwoflaketablesusingtalend【发布时间】:2020-08-0508:36:10【问题描述】:我对Talend很陌生,我需要对snwoflake表执行scd1操作。谁能建议我在talend中执行此操作所需的重要... 查看详情

在 C# 中使用 SQL Server 2014 保存和检索 XML 数据

】在C#中使用SQLServer2014保存和检索XML数据【英文标题】:savingandretrievingXMLdatausingSQLserver2014inC#【发布时间】:2016-03-1606:38:46【问题描述】:我的XML数据应该如下所示<?xmlversion="1.0"standalone="yes"?><DocumentElement><XMLData><... 查看详情

如何在 SQL Server 查询中同时使用 LIKE 和 NOT LIKE

】如何在SQLServer查询中同时使用LIKE和NOTLIKE【英文标题】:HowtouseLIKEandNOTLIKEtogetherinaSQLServerquery【发布时间】:2016-03-0202:52:38【问题描述】:我有一个SQLServer表Users,其中有一列codename有很多记录,例如:...[LP]LuisJoseLuis[LP]PedrosoLuis... 查看详情