这个错误的解决办法,我的程序创建一个外部表代码如下:
我用的是SCOTT TIGER 用户,在SQLPLUS下进入到此用户 一定要用DBA方式进入,如果在DOS模式下则输入
SET ORACLE_SID=JAMES//你可以用你自己数据库的服务名 我用的是JAMES
SQLPLUS
请输入用户名:SCOTT AS SYSDBA
请输入密码:TIGER
进入。。。。。
SQL>CREATE DIRECTORY EXTDIR AS 'D:/SQL/';//创建目录对象
SQL>GRANT READ, WRITE ON DIRECTORY EXTDIR TO SCOTT;//授予用户读写权限
SQL>CREATE TABLE EXT_BIGTBL//创建一个外部表
( OWNER VARCHAR2(30), //注意这里一定不要有什么¥#%&*@这类的符号 要不它就说什么HASH什么EXCEPTION 我一开始就
//定义了一个OWNER# 就出错误啦
NAME VARCHAR2(50),
OBJ NUMBER,
CTIME DATE,
STATUS VARCHAR2(10)
)
ORGANIZATION EXTERNAL(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY EXTDIR
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(
OWNER,
NAME,
OBJ,
CTIME CHAR(255) DATE_FORMAT DATE MASK 'YYYY-MM-DD HH24:MI:SS',
STATUS
)
)
LOCATION('ldr_object1.csv')
)REJECT LIMIT UNLIMITED ;
ORA-29913: 执行ODCIEXTTABLEFETCH 调出时出错
这时候出现了一个这么个错误,我搞了一上午结果是ldr_object1.csv文件中有空白 一定要把其中的空白去掉才可以,这点比较恶心你想用外部表就必须这么做,如果你用SQLLDR 的话就可以在这么设置
load data
infile ldr_object1.csv
truncate into table objects
fields terminated by "," optionally enclosed by '"' TRAILING NULLCOLS
(
owner#,name,obj#,ctime date 'yyyy-mm-dd hh24:mi:ss',
status
)
红色的字体的代码就是忽略空格的意思。所以要想用先进的技术就不得不恶心点。用外部表来快速的进行导入数据就要把文件作的规范些这样才能成功的导入。