- 浏览: 749035 次
- 性别:
- 来自: 长春
文章分类
最新评论
-
qq591628420:
正解!!!!!!!!!!!!!!!!!!!!!!!!!! ...
ibatis配置log4j输出sql语句等日志信息 -
joy1982109:
我在was下发现一个同名的xml文件,是不是就是这个呢。不过没 ...
让webshere(was)发布程序编译jsp为java文件,java文件位置 -
xiaoqing2305:
...
jbuilder 2006中添加不支持的文件类型,不支持的不显示问题 -
metallicats:
非常感谢博主!
weblogic访问ORACLE,thin连接方式存取BLOB和CLOB字段(原创) -
lailaiping:
谢谢作者了
让webshere(was)发布程序编译jsp为java文件,java文件位置
tos版本4.0.2
最近同事在弄数据交换,用的是talend open studio(tos),在一个数据库的情况下,使用toracleoutput控件可以实现blob的导入导出。但是在两个数据库的情况下执行涉及好的过程就报错了,报没有表或者视图。很怪异的报错。
我经过查看数据交换工具生成的运行期代码,发现,blob的处理方式是用jdbc 的setObject(blob)方法
原代码如下
pstmt_tOracleOutput_3.setObject(6, rs.getObject(6));
这个方法在两个库之间是不行的。
改用如下代码,可以通过
java.sql.Blob oblob = (java.sql.Blob) (rs.getObject(6)); pstmt_tOracleOutput_3.setObject(6, oblob.getBytes(1, (int) oblob.length()));
通过修改tos下面
TOS-Win32-r43696-V4.0.2\plugins\org.talend.designer.components.localprovider_4.0.2.r43696\components\templates下的db_output_bulk.skeleton文件
generateSetStmt方法,添加else分支
public String generateSetStmt(String typeToGenerate, String dbType, Column column, int index, String incomingConnName, String cid, int actionType) { boolean isObject = false; String prefix = null; if(actionType == NORMAL_TYPE) { prefix = "pstmt_"; } else if(actionType == INSERT_TYPE) { prefix = "pstmtInsert_"; } else if(actionType == UPDATE_TYPE) { prefix = "pstmtUpdate_"; } StringBuilder setStmt = new StringBuilder(); if(typeToGenerate.equals("Character")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.CHAR);\r\n"); } else if(typeToGenerate.equals("Date")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.DATE);\r\n"); } else if(typeToGenerate.equals("byte[]")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); if(dbType != null && (dbType.equals("LONG RAW") || dbType.equals("RAW"))) { setStmt.append(prefix + cid + ".setBytes(" + index + ", null);\r\n"); } else { setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.ARRAY);\r\n"); } } else if(typeToGenerate.equals("Long") || typeToGenerate.equals("Byte") || typeToGenerate.equals("Integer") || typeToGenerate.equals("Short")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.INTEGER);\r\n"); } else if(typeToGenerate.equals("String")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); if(dbType != null && dbType.equals("CLOB")) { setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.CLOB);\r\n"); } else { setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.VARCHAR);\r\n"); } } else if(typeToGenerate.equals("Object")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); if(dbType != null && dbType.equals("BLOB")) { setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.BLOB);\r\n"); } else if("CLOB".equals(dbType)){ setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.CLOB);\r\n"); } else { setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.OTHER);\r\n"); } } else if(typeToGenerate.equals("Boolean")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.BOOLEAN);\r\n"); } else if(typeToGenerate.equals("Double")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.DOUBLE);\r\n"); } else if(typeToGenerate.equals("Float")) { isObject = true; setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.FLOAT);\r\n"); } if(isObject) { setStmt.append("} else {"); } typeToGenerate = getGenerateType(typeToGenerate); if(typeToGenerate.equals("Char") || typeToGenerate.equals("Character")) { if(isObject) { setStmt.append("if(" + incomingConnName + "." + column.getName() + " == null) {\r\n"); } else { setStmt.append("if(String.valueOf(" + incomingConnName + "." + column.getName() + ").toLowerCase().equals(\"null\")) {\r\n"); } setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.CHAR);\r\n"); setStmt.append("} else if(" + incomingConnName + "." + column.getName() + " == '\0'){\r\n"); setStmt.append(prefix + cid + ".setString(" + index + ", \"\");\r\n"); setStmt.append("} else {\r\n"); setStmt.append(prefix + cid + ".setString(" + index + ", String.valueOf(" + incomingConnName + "." + column.getName() + "));\r\n"); setStmt.append("}"); } else if(typeToGenerate.equals("Date")) { setStmt.append("if(" + incomingConnName + "." + column.getName() + " != null) {\r\n"); setStmt.append(prefix + cid + ".setTimestamp(" + index + ", new java.sql.Timestamp(" + incomingConnName + "." + column.getName() + ".getTime()));\r\n"); setStmt.append("} else {\r\n"); setStmt.append(prefix + cid + ".setNull(" + index + ", java.sql.Types.DATE);\r\n"); setStmt.append("}\r\n"); } else if(typeToGenerate.equals("Bytes") && (dbType != null && (dbType.equals("LONG RAW") || dbType.equals("RAW")))) { setStmt.append(prefix + cid + ".setBytes(" + index + ", " + incomingConnName + "." + column.getName() + ");\r\n"); } else if(typeToGenerate.equals("String") && (dbType != null && dbType.equals("CLOB"))) { setStmt.append(prefix + cid + ".setCharacterStream(" + index + ", new java.io.StringReader(" + incomingConnName + "." + column.getName() + "), " + incomingConnName + "." + column.getName() + ".length());\r\n"); } else if (typeToGenerate.equals("Bytes") && (dbType != null && dbType.equals("BLOB"))) { setStmt.append(prefix + cid + ".setBinaryStream(" + index + ", new java.io.ByteArrayInputStream((byte[])" + incomingConnName + "." + column.getName() + "), ((byte[])" + incomingConnName + "." + column.getName() + ").length);\r\n"); } else if (typeToGenerate.equals("Object") && (dbType != null && dbType.equals("BLOB"))) {//添加的else代码 setStmt.append("java.sql.Blob oblob = (java.sql.Blob)(" + incomingConnName + "." + column.getName()+");\r\n"); setStmt.append(prefix + cid + ".set" + typeToGenerate + "(" + index + ", oblob.getBytes(1, (int)oblob.length()));\r\n"); } else { setStmt.append(prefix + cid + ".set" + typeToGenerate + "(" + index + ", " + incomingConnName + "." + column.getName() + ");\r\n"); } if(isObject) { setStmt.append("}\r\n"); } return setStmt.toString(); }
发表评论
-
talend open studio 连接access时,需要用32位的软件
2019-04-11 11:18 551mdb文件是32位的,建立系统odbc数据源或者用文件直连的 ... -
XML内容中不能有&字符
2017-06-25 17:27 2474&是xml中的转义字符的开头,如果xml内容中有ur ... -
天成公司产品开发部“错题本”
2017-05-12 15:57 5421、页面写死IP地址等信息 造成问题:实施人员不容易维护 ... -
windows和linux下使用命令查找端口对应的进程pid并杀死进程
2017-01-02 09:46 3566windows下命令,8080是要杀死进程的端口,这个命令 ... -
wmware12 共享目录不好使,不能安装wmwarre tools
2016-10-25 12:14 1029表现是这样的,按照网上设置了共享目录后,做映射时就是看不到 ... -
java.lang.Exception: XML文档格式不正确:prolog 中不允许有内容
2016-10-09 09:30 1676在进行xml开发的过程中,调用对方webservice,接口 ... -
关于URIEncoding设置规则
2016-03-19 13:34 3741<!--[if !supportLists]--> ... -
js文件压缩成gzjs格式的方法和工具
2015-01-30 10:15 19321、解压 解压可以直接用winrar工具打开gzjs文件 ... -
tomcat的server.xml里面配置URIEncoding的问题,导致post和get访问编码不一致
2014-10-28 16:52 4600原来的发送短信的包都是好用的,post方式和get方式提交数 ... -
windows远程桌面强制登录,当用户满的时候
2014-10-27 13:16 3235windows远程桌面强制登录,如果用户满了,会提示超出最 ... -
oracle数据恢复
2013-11-29 15:51 1072这些恢复都是在数据库启用了undo表空间的情况下才好使的,并 ... -
java HashMap存值巧遇,key不同但是却覆盖了之前的值
2013-09-27 17:16 2687情况是这样的 一个空的HashMap testHM; t ... -
查看windows系统进程的详细信息,任务管理器看不到的
2013-07-12 13:01 9418任务管理器的显示东西太简单了,想看到一个进程的详细路径和启 ... -
oracle 检索数据的时候报ORA-01722: 无效数字
2013-07-11 17:18 4309sql语句如下 select * from yhb_ ... -
java高效代码优化方案
2013-04-10 23:31 2555将类尽可能的设置为Final,更深入点说,如果类是fina ... -
利用winrar给已经压缩好的压缩包加密码,和压缩前添加密码
2013-01-06 10:14 5151其实很简单,但是我用了好久的winrar才知道这个功能,一般都 ... -
nginx 操作,启动、停止、重启
2012-11-01 16:47 45021查看nginx进程看看有没有启动,并可以查看进程ID [r ... -
vnc 常用操作笔记,启动vncserver,指定端口
2012-10-16 15:50 16039linux下启动vnc [root@anhnfts n ... -
eclipse jee 版,项目图标上总有一个红色的叉子
2012-10-08 15:39 12637eclipse 使用的时候项目 ... -
websphere6,7上修改类装载顺序为应用程序优先
2012-09-29 15:28 5941看附件吧,写在word里了, 想弄到这里太费劲了,不支持 ...
相关推荐
Talend Open Studio是一款企业级开源ETL(Extract, Transform, Load)工具,用于数据集成和数据管理任务。该软件允许开发者通过拖放的方式来构建数据集成流程,并且支持广泛的集成场景,包括数据清洗、数据转换、...
《Talend Open Studio用户手册》是一份详细指导用户如何操作和利用Talend Open Studio进行数据集成和处理的文档。这份手册适用于Talend Open Studio的5.0版本,旨在帮助用户掌握这款强大的开源集成工具,从而实现...
### Talend Open Studio V5.6.3 版本概览与下载指南 #### 一、Talend Open Studio 简介 Talend Open Studio 是一款强大的数据集成工具,它提供了一系列用于数据清洗、转换和加载等功能的组件,帮助企业用户轻松...
talend open studio for big data v5.6.3下载地址详见txt
talend open studio for big data v5.5.2下载地址详见txt文件
这一点对于那些已经熟悉Java语言的开发者来说,是一个非常大的优势,他们可以利用已有的Java知识快速上手Talend Open Studio,从而在数据整合领域取得更大的竞争力。 Talend Open Studio支持多种数据源,包括关系型...
### Talend Open Studio for Big Data V6.1.2 #### 概述 Talend Open Studio for Big Data是一款强大的开源数据集成工具,专为处理大规模数据集而设计。该软件支持多种大数据处理技术,包括但不限于Hadoop ...
文档里有针对Talend Open Studio For Data integration (ETL) 的高清视频教程下载地址。有需要的人可以自行下载。
talend open studio for big data v6.2.1下载地址详见txt文件
3. **异构IT环境支持**:Talend Open Studio for ESB支持多种数据源和系统之间的集成,无论是同构还是异构的IT环境,TOS-ESB都能够提供有效的解决方案。 ### Talend Open Studio for ESB的功能架构 TOS-ESB的功能...
talend open studio for big data v6.0.1下载地址详见txt
使用Open Studio for Data Integration与最新的云应用程序和平台或传统数据库和应用程序一起使用,以通过图形工具,本机代码生成以及数百个预建组件和连接器快速设计和部署。 Open Studio for Data Integration是...
talend open studio for big data v6.3.0下载地址见txt文件
talend open studio for big data v6.1.1下载地址在文本内,请注意
成千上万的开发人员使用Talend Open Studio轻松与任何应用程序,数据库,API或Web服务集成。 嵌入现有的Java代码库或利用社区组件和代码来扩展您的项目。 Talend拥有数百万的下载量,并提供各种功能强大的开源集成...
使用适用于ESB的Open Studio扩展您的开源堆栈,并将更新传递给MDM,以分发到连接的系统。 Talend是Apache项目的积极贡献者,下载了数百万次下载,并提供了各种功能强大的开源集成软件工具,Talend是云和大数据集成...
Open Studio for Data Quality可以轻松连接到数百个数据源并生成分析,以帮助定义下一步清洁数据的步骤。 根据自定义阈值评估数据质量,并衡量是否符合内部标准(例如SKU)或外部标准(例如邮政编码)。 了解如何将...
假设我们需要从源数据库的“Orders”表中抽取订单数据,并将其加载到目标数据库的两个表“Orders_A”和“Orders_B”中。 1. **配置源数据库连接**:在Talend Studio中配置源数据库连接,如MySQL。 2. **配置目标...