【发布时间】:2016-02-10 15:23:54
【问题描述】:
我正在尝试创建一个每天将文件上传到 Oracle 数据库的自动化流程。
我遇到了日期格式问题。在我需要上传的 CSV 文件中,日期格式为“mm:ss.0”。 However when selecting that cell the formula bar shows the full date as a timestamp, eg "dd/mm/yyyy hh24:mi:ss".我尝试将其上传到的列是 TIMESTAMP(6)。
我不确定在 SQL*Loader 中放入什么格式。目前这是我的控制文件,其中错误:
OPTIONS (SKIP=1)
LOAD DATA
INFILE 'C:\Users\test.csv'
INSERT INTO TABLE test
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(
id integer,
created_at timestamp 'DD/MM/YYYY HH24:MI:SS',
)
可能是错误的,我目前的假设是,如果我可以在手动 Oracle SQL 上传窗口中找出要放入“数据类型”框中的内容,这也适用于 SQL*Loader。到目前为止,我已经尝试过:
-
DD/MM/YYYY HH24:MI:SS- 错误:CREATED_AT GDK-05043:不是一个有效的月份 -
DD/MM/YYYY HH24:MI:SS.FF- 错误:CREATED_AT GDK-05043:无效月份 -
MI:SS.0- 错误:CREATED_AT GDK-05021:日期格式无法识别 -
MI:SS.FF- 错误:CREATED_AT GDK-05030:日期格式模式在转换整个输入字符串之前结束。 -
HH24:MI:SS.FF错误:CREATED_AT GDK-05030:日期格式模式在转换整个输入字符串之前结束。
文件是通过电子邮件发送给我的,所以我无法更改 Excel 中的格式(虽然如果我打开文件并手动进行一次上传,这可以工作,但我希望这发生在我没有输入!)
如果你能指出我正确的方向,那就太好了。
【问题讨论】:
-
不是在 excel 中打开文件,而是在文本编辑器中打开该文件时,您会在该日期字段中看到什么?
-
我看到了“yyyy-mm-dd HH24:MI:SS.0”。在 oracle 中尝试并得到以下错误:“CREATED_AT GDK-05030:日期格式模式在转换整个输入字符串之前结束。
-
我想知道您在文本编辑器中打开 csv 文件时看到的内容,而不是尝试加载数据后收到的错误消息。 EXCEL 会乱用文本/日期/数字格式,因此您在 EXCEL 中看到的内容实际上可能不是文件中的内容。
-
抱歉,我按下回车键并在我完成输入之前发送了评论...编辑它以显示我在记事本中看到的格式。非常感谢这个提示 - 不知道 excel 不会正确显示格式。
-
select to_timestamp('2016-02-10 15:42:12.3', 'yyyy-mm-dd hh24:mi:ss.ff') from dual;对我来说很好;该列中所有数据的格式是否相同?
标签: sql oracle formatting timestamp sql-loader