SQLLDR数据类型
今天使用Oracle提供的sqlldr将CSV文件导入到数据库中,因为表的列信息有字符类型也有数值类型,在写控制文件时也对于的加上了数据类型,控制文件如下:
load data infile 'aa.csv' into table student fields terminated by ',' ( id number, name varchar2(10) )
表结构:
create table STUDENT ( ID NUMBER, NAME VARCHAR2(10) )
结果运行时直接报错了,报错信息如下:
c:\>sqlldr scott/tiger control=aa.ctl SQL*Loader: Release 11.2.0.1.0 - Production on Mon Jul 28 22:35:27 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. SQL*Loader-350: Syntax error at line 6. Expecting "," or ")", found "number". id number, ^
大概的意思是不识别,感觉很奇怪怎么识别不了number类型,查了下文档原来sqlldr有自己的数据类型,例如整数类型是INTEGER EXTERNAL,字符类型是CHAR
常见的数据类型:
CHAR 字符类型可以描述数据中的VARCHAR2 或 CHAR 列
DATE 日期类型可以描述数据库的DATE列
INTEGER EXTERNAL 整数类型
FLOAT EXTERNAL 浮点类型
DECIMAL EXTERNAL 小数
修改控制文件:
load data infile 'aa.csv' into table student fields terminated by ',' ( id INTEGER EXTERNAL, name CHAR )
重新执行一切OK了。
如果在服务器端执行,可以使用silent参数屏蔽输出的信息,执行完后可以直接看日志文件
c:\>sqlldr scott/tiger control=aa.ctl slient=all
分类: Oracle工具