oracle - SQL*Loader 中的 if-else 情况

标签 oracle csv sql-loader

每当 SQL*Loader 在读取 .csv 时遇到错误日期 (0000-00-00 00:00:00) 时,我都需要将 NULL 插入表中> 文件。

csv 中提供的错误日期始终为 0000-00-00 00:00:00

我需要帮助找出处理错误日期和正确日期的情况。

有两种情况:

  1. 日期格式正确(YYYY/MM/DD hh24:mi:ss)
  2. 日期格式错误 (0000-00-00 00:00:00)

最初我在 SQL 控制文件中有一个简单的语句,如下所示,现在我还需要添加案例来处理错误的日期。

START_DATE 日期“YYYY/MM/DD hh24:mi:ss”NULLIF (START_DATE =“NULL”)

我需要一个 SQL*Loader 语句来处理上述两种情况。

最佳答案

在验证为不同的数据类型之前,文件中的所有数据本质上都是字符串。因此,您可以将其视为不良数据的字符串,然后再将其转换为日期:

START_DATE "TO_DATE(NULLIF(:START_DATE, '0000-00-00 00:00:00'), 'yyyy/mm/dd hh24:mi:ss')"

我有点担心“坏”日期的格式与好日期的格式不同。它表明正在发生一些您可能不知道的事情,例如来自两个不同系统的数据或该字段未作为日期存储在源系统中。

如果可能的话,我会仔细检查这些数据的构造方式以及错误日期的预期含义是什么。

关于oracle - SQL*Loader 中的 if-else 情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968965/

相关文章:

sql - Oracle SQL 案例

sql - 如何在 JPA/Hibernate 中执行 native SQL 脚本?

Python将字符串拆分为多个带有单引号和尾随逗号的子字符串

sql - 用于批量上传的 INSERT 命令或 SQL Loader 哪个更有效 - ORACLE 11g R2

java - Spring Boot 多个配置文件数据源

python - 复杂的行和列操作 Pandas

python - 通过 Python 使用 BULK INSERT

sql - 从 SQL*Loader 控制文件中访问数据文件名

python - 有没有办法在 Python 中对 1900 年之前的日期使用类似 strftime 的函数?

sql - 阅读 Oracle 解释计划