如何在 Oracle 11g 表中从 csv 加载数据中将日期时间截断或转换为日期

奥丁克鲁斯

我需要转换格式为这样的传入日期时间,2/5/2010 12:00:00 AM它必须作为"MM/DD/YYYY". 我一直在研究,但找不到用于强制转换或截断传入日期时间的语法。我收到这个错误

SQL*Loader-350: Syntax error at line 11.
Expecting "," or ")", found "(".
,   trunc(EXAMPLE_DATE)            DATE "MM/DD/YYYY" NULLIF (EXAMPLE_DATE

当我尝试使用此代码时

OPTIONS (READSIZE=20971520, BINDSIZE=20971520, ROWS=10000, ERRORS=90000)
LOAD DATA
INFILE *
INTO TABLE EXAMPLE.TABLE
APPEND
FIELDS TERMINATED BY ','  optionally enclosed by '"'
TRAILING NULLCOLS
(
    EXAMPLE1                CHAR NULLIF (EXAMPLE1=BLANKS)
,   EXAMPLE2                CHAR NULLIF (EXAMPLE2=BLANKS)
,   trunc(EXAMPLE_DATE)     DATE "MM/DD/YYYY" NULLIF (EXAMPLE_DATE=BLANKS)
)

我已经尝试使用 to_date、trunc 和 to_char,但我不太确定使用哪个,以及使用什么语法。显然我不能EXAMPLE_DATE像我试图那样截断

编辑:原始代码如下所示

OPTIONS (READSIZE=20971520, BINDSIZE=20971520, ROWS=10000, ERRORS=90000)
LOAD DATA
INFILE *
INTO TABLE EXAMPLE.TABLE
APPEND
FIELDS TERMINATED BY ','  optionally enclosed by '"'
TRAILING NULLCOLS
(
    EXAMPLE1                CHAR NULLIF (EXAMPLE1=BLANKS)
,   EXAMPLE2                CHAR NULLIF (EXAMPLE2=BLANKS)
,   EXAMPLE_DATE        DATE "MM/DD/YYYY" NULLIF (EXAMPLE_DATE=BLANKS)
)

这段代码在一个只有日期MM/DD/YYYY格式的 csv 文件中按预期工作,但是当给定一个如下所示的日期时间时:2/5/2010 12:00:00 AM它将.bad在 csv 目录中输出一个文件。

亚历克斯·普尔

您需要控制文件中的格式与您在数据文件中获得的值相匹配:

,   EXAMPLE_DATE        DATE "MM/DD/YYYY HH:MI:SS AM" NULLIF (EXAMPLE_DATE=BLANKS)

我设置了一个表格以匹配您的示例:

create table example_table (example1 varchar2(10), example2 varchar2(10), example_date date);

以及一个包含以下内容的数据文件:

A,B,2/5/2010 12:00:00 AM

和一个控制文件:

OPTIONS (READSIZE=20971520, BINDSIZE=20971520, ROWS=10000, ERRORS=90000)
LOAD DATA
INFILE *
INTO TABLE EXAMPLE_TABLE
APPEND
FIELDS TERMINATED BY ','  optionally enclosed by '"'
TRAILING NULLCOLS
(
    EXAMPLE1                CHAR NULLIF (EXAMPLE1=BLANKS)
,   EXAMPLE2                CHAR NULLIF (EXAMPLE2=BLANKS)
,   EXAMPLE_DATE        DATE "MM/DD/YYYY HH:MI:SS AM" NULLIF (EXAMPLE_DATE=BLANKS)
)

运行通过报告:

Commit point reached - logical record count 1

和日志文件说:

Table EXAMPLE_TABLE:
  1 Row successfully loaded.
  0 Rows not loaded due to data errors.
  0 Rows not loaded because all WHEN clauses were failed.
  0 Rows not loaded because all fields were null.

并且该表填充了该数据:

select * from example_table;

EXAMPLE1   EXAMPLE2   EXAMPLE_DA
---------- ---------- ----------
A          B          2010-02-05

你还说:

它必须作为“MM/DD/YYYY”进入表格

它必须作为日期进入表格。日期没有任何固有的人类可读格式;Oracle 使用其自己的内部表示来高效且明确地存储数据。当您查询表格时,您的客户端将使用其自己的设置或您的会话NLS_DATE_FORMAT设置将其转换为可识别的格式以进行显示如果您以您显示的格式看到日期,那么这就是您的客户端/会话设置为显示它们的格式。我的配置为 YYYY-MM-DD,所以这就是您在上面查询的输出中看到的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Oracle 11g Express Edition中创建新数据库?

来自分类Dev

如何在Oracle 11g中获取层次结构联接数据的根

来自分类Dev

如何在oracle数据库11g中添加sql文件?

来自分类Dev

如何在Oracle 11g中执行存储过程

来自分类Dev

如何在Oracle 11g中限制查询结果?

来自分类Dev

如何在Oracle 11g中执行CTE查询

来自分类Dev

如何在Oracle 11G中设置sysdba密码

来自分类Dev

如何在 oracle 11g 中更改几何?

来自分类Dev

如何使用Oracle SQL Developer或其他工具填充/填充Oracle 11g表中的随机数据?

来自分类Dev

oracle 11g resultSet如何获取表名

来自分类Dev

Oracle数据库中的存储过程(11g)

来自分类Dev

如何在Oracle 11g SQL中计算两个日期之间的差异

来自分类Dev

如何在oracle 11g中正确地SELF JOIN表?

来自分类Dev

如何从oracle 11g中的日期比较月和日的值并在where子句中使用它?

来自分类Dev

如何从表中检索记录的一半-Oracle 11g

来自分类Dev

如何在一行中左连接两个表(oracle 11g 或标准 sql)

来自分类Dev

如何在Oracle 11g中的“选择”查询中添加偏移量?

来自分类Dev

如何在Oracle 11g SQL中的插入查询中插入新行

来自分类Dev

ireport 无法识别 oracle 11g 数据库中的表

来自分类Dev

如何在Oracle PL / SQL 11G中声明数字数组

来自分类Dev

如何在C#中编码小写查询oracle 11g?

来自分类Dev

如何在Oracle 11g(Windows 8)中启用分区?

来自分类Dev

如何在oracle 11g中插入印度卢比符号?

来自分类Dev

如何在Oracle PL / SQL 11G中声明数字数组

来自分类Dev

如何在Oracle 11g(Windows 8)中启用分区?

来自分类Dev

如何在 Oracle Service Bus 11g 中启用监控?

来自分类Dev

如何在Oracle SQL 11G中将列转置为行

来自分类Dev

如何在Oracle 11g(Application Express Edition)中导出导入数据库?

来自分类Dev

如何在 Windows 8 上为 oracle 11g 创建数据库用户?

Related 相关文章

  1. 1

    如何在Oracle 11g Express Edition中创建新数据库?

  2. 2

    如何在Oracle 11g中获取层次结构联接数据的根

  3. 3

    如何在oracle数据库11g中添加sql文件?

  4. 4

    如何在Oracle 11g中执行存储过程

  5. 5

    如何在Oracle 11g中限制查询结果?

  6. 6

    如何在Oracle 11g中执行CTE查询

  7. 7

    如何在Oracle 11G中设置sysdba密码

  8. 8

    如何在 oracle 11g 中更改几何?

  9. 9

    如何使用Oracle SQL Developer或其他工具填充/填充Oracle 11g表中的随机数据?

  10. 10

    oracle 11g resultSet如何获取表名

  11. 11

    Oracle数据库中的存储过程(11g)

  12. 12

    如何在Oracle 11g SQL中计算两个日期之间的差异

  13. 13

    如何在oracle 11g中正确地SELF JOIN表?

  14. 14

    如何从oracle 11g中的日期比较月和日的值并在where子句中使用它?

  15. 15

    如何从表中检索记录的一半-Oracle 11g

  16. 16

    如何在一行中左连接两个表(oracle 11g 或标准 sql)

  17. 17

    如何在Oracle 11g中的“选择”查询中添加偏移量?

  18. 18

    如何在Oracle 11g SQL中的插入查询中插入新行

  19. 19

    ireport 无法识别 oracle 11g 数据库中的表

  20. 20

    如何在Oracle PL / SQL 11G中声明数字数组

  21. 21

    如何在C#中编码小写查询oracle 11g?

  22. 22

    如何在Oracle 11g(Windows 8)中启用分区?

  23. 23

    如何在oracle 11g中插入印度卢比符号?

  24. 24

    如何在Oracle PL / SQL 11G中声明数字数组

  25. 25

    如何在Oracle 11g(Windows 8)中启用分区?

  26. 26

    如何在 Oracle Service Bus 11g 中启用监控?

  27. 27

    如何在Oracle SQL 11G中将列转置为行

  28. 28

    如何在Oracle 11g(Application Express Edition)中导出导入数据库?

  29. 29

    如何在 Windows 8 上为 oracle 11g 创建数据库用户?

热门标签

归档