我有一张名为日历的表.
其中一个列名为'date'
当我想选择日期列时,它会给出错误ORA-01747,即无效的table.column.
select date from calendars
Run Code Online (Sandbox Code Playgroud)
我想这是因为'date'是pl/sql的保留字.问题是甚至无法更改列名:
alter table calendars rename column date to date_d
Run Code Online (Sandbox Code Playgroud)
结果是:ORA-00904错误:标识符无效.
你有什么建议?
谢谢.
数据库版本:10g企业版10.2.0.4.0版
客户端版本:11g企业版11.2.0.1.0版(Windows 7 64位)
当我尝试从数据库导出(exp)一个表时:
exp usr/pass@remote_db file=f.dmp tables=table
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
EXP-00008:遇到ORACLE错误904
ORA-00904:"POLTYP":标识符无效
EXP-00000:导出终止失败
我在网上搜索了它,我明白问题是版本不兼容.
你有什么建议我这样做的?
注意:我也尝试使用数据泵导出,但它给出:
UDE-00018: Data Pump client is incompatible with database version 10.2.0.4.0
Run Code Online (Sandbox Code Playgroud) 我想在Oracle DB中维护一个日历表,我希望从2011年到2013年的所有日期(可能是任何一年)填写.我怎样才能做到这一点?
考虑我的数据库表有列和示例数据集是:
S.No Cal_Dt DayName
1 01-01-2011 Monday
2 02-01-2011 Tuesday
3 03-01-2011 Wednesday
Run Code Online (Sandbox Code Playgroud)
等等.
我只关注Cal_Dt(DayName是可选的).
我正在通过 SQLLDR 将一些数据加载到 Oracle。源文件是“管道分隔”。
FIELDS TERMINATED BY '|'
Run Code Online (Sandbox Code Playgroud)
但有些记录的数据中包含管道字符,而不是作为分隔符。因此,它破坏了记录的正确加载,因为它将indata管道字符理解为字段终止符。
你能给我指出解决这个问题的方向吗?
数据文件约9GB,手动编辑比较困难。
例如,
加载行:
ABC|1234567|STR 9 R 25|98734959,32|2011年12月28日
拒绝行:
DE4|2346543|WE| 454|956584,84|2011年11月28日
错误:
Rejected - Error on table HSX, column DATE_N.
ORA-01847: day of month must be between 1 and last day of month
Run Code Online (Sandbox Code Playgroud)
DATE_N 列是最后一列。
我想使用regexp在oracle中提取字符串的以下部分:
String: FN_SUM(ACCRUED_INTEREST)
Output expected: ACCRUED_INTEREST
Run Code Online (Sandbox Code Playgroud)
我试过了 :
select regexp_substr('FN_SUM(ACCRUED_INTEREST)','([^)]') from dual;
Run Code Online (Sandbox Code Playgroud)
这给了我ORA-12725错误.
任何使用正则表达式的解决方案都将非常感激.