【问题标题】:Insert into a table using tdbrow talend -casting datatype or conversion issues?使用 tdbrow talend -casting 数据类型或转换问题插入表?
【发布时间】:2021-05-03 21:37:20
【问题描述】:

Tdbrow: 在括号中,我已经在表格中指出了它们的预定义数据类型!

insert into FILETABLE
      (ID (number), DIR(number), file_name(varchar2), file_date(date),file_size(number))
    values
      (file_seq.nextval,
       '"+((String)globalMap.get("DIRID"))+"',
       '"+((String)globalMap.get("FILE_NAME"))+"',
       to_date('"+context.FILE_DATE+"','dd-mon-yyyy hh24:mi:ss'),
       '"+((String)globalMap.get("FILE_SIZE"))+"')

全局和上下文变量的值是在上一步中通过 tjavarow 获得的。

仅对于 DATE,我尝试使用上下文变量来避免混淆,但由于某种原因它根本不起作用,并且我不断收到 ORA 错误,例如无效数字等。

context.FILE_DATE=2021-01-28 10:22:41 (This is the stored value) 

当插入数据库时​​,所需的格式如下:

 to_date(i_file_date,'dd-mon-yyyy hh24:mi:ss')
 

#1.我能够处理从 java 到 oracle 数据库的字符串和 varchar2。 #2.这里真正关心的是在java中提取为整数的数字数据类型(仍然无法工作)并不断抛出错误 #3.如何处理来自java的DATE并以所需的格式插入到oracle数据库中。

感谢您的帮助![在此处输入图片描述][1] [1]:https://i.stack.imgur.com/veVHg.png

【问题讨论】:

    标签: java oracle insert talend dml


    【解决方案1】:

    我相信您的日期格式颠倒了,您提供的格式是告诉 Oracle 如何将给定的字符串转换为 Oracle 内部日期数据类型,您现在可以控制它的存储方式,此时它并不真正关心您. 你应该使用

    to_date('"+context.FILE_DATE+"','yyyy-mm-dd hh24:mi:ss'),
    

    如果您需要以您可以使用的格式读取您的日期:

    to_char(file_date,'dd-mon-yyyy hh24:mi:ss') 
    

    或者您可以设置 NLS_DATE_FORMAT 变量或配置您的环境以使用该格式作为默认格式。

    您可能还应该阅读有关使用绑定变量的内容,它可以节省很多,并且它知道如何处理从 Java 数据类型到 Oracle 数据类型的转换。

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多