插入一个B.C。从平面文件到 Oracle DB 的年值

Inserting a B.C. year value from a flat file to Oracle DB

我正在使用 sqlldr 将数据从平面文件 (.txt) 传输到 oracle 数据库。至于我使用的日期 "to_date(:born, 'DDMMYY')",其中 born 是列。如何指定 B.C。年份 (e.x: 01-01-1000BC) 在我的平面文件中,以便它可以转移到我的 oracle table?

您可以使文本文件中的字符串始终具有 BC 或 AD 后缀(在这种情况下不能省略 AD),例如01011000BC01011990AD,然后在你的控制文件中:

"to_date(:born, 'DDMMYYYYBC')"

或者如果您只想更改负值,您可以使用符号选项做同样的事情,例如0101-100019900101 然后在控制文件中:

"to_date(:born, 'DDMMSYYYY')"

BC 值看起来很奇怪。

由于您似乎可以控制格式,因此将元素按 YYYYMMDD 顺序排列会更简单且更具可读性,例如-1000123119901231(更改日期以帮助区分字符串中的月份和日期)然后:

"to_date(:born, 'SYYYYMMDD')"

这基本上就是@xQbert 的建议。