我想通过SQLLDR在Oracle中加载的数据,但是,它总是在加载其他格式的数据。
所以做我的数据从我的文件是这样的:
2018-11-27 13 Vienna 1 66.90 1
这是具有加载的数据之后的结果:
27-Nov-17 1443443505 ienna 909510961 0.9 3377
除了日期列的所有列是错误的
这是我的表结构:
BOOKINGDATE DATE
CUSTOMERID NUMBER(38,0)
LOCATIONID VARCHAR(255 BYTE)
NUMBEROFPARKINGTICKET NUMBER(38,0)
CHARGETICKET NUMBER(18,2)
DURATIONINMINUTES NUMBER(38)
这是我的文件我的表定义:
LOAD DATA
APPEND
INTO TABLE ROTH.PARKSCHEIN_ROTH
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED BY '"'
(
BOOKINGDATE DATE 'YYYY-MM-DD',
CUSTOMERID INTEGER,
LOCATIONID CHAR(255),
NUMBEROFPARKINGTICKET INTEGER,
CHARGETICKET DECIMAL EXTERNAL,
DURATIONINMINUTES INTEGER
)
有人能告诉我我必须要使用的数据类型?我认为Oracle是找到所有类型本身除了日期?
非常感谢你提前为您提供帮助。
它通常是最容易离开它为默认值,让数据库转换发生:
load data
replace
into table parkschein_roth
fields terminated by '\t'
optionally enclosed by '"'
( bookingdate date 'YYYY-MM-DD'
, customerid
, locationid
, numberofparkingticket
, chargeticket
, durationinminutes )
然后,日志显示它这样做:
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
BOOKINGDATE FIRST * WHT O(") DATE YYYY-MM-DD
CUSTOMERID NEXT * WHT O(") CHARACTER
LOCATIONID NEXT * WHT O(") CHARACTER
NUMBEROFPARKINGTICKET NEXT * WHT O(") CHARACTER
CHARGETICKET NEXT * WHT O(") CHARACTER
DURATIONINMINUTES NEXT * WHT O(") CHARACTER
请注意,指定一个数字类型,而不EXTERNAL
关键字指示SQL * Loader的直接读取文件中的二进制数据,而不是它的字符表示:例如,什么是显示为1
在文本编辑器是字符49(也就是符号代表比特序列00110001
),而不是实际的数字1(我从未见过的二进制编码格式的数字数据文件,但我想他们必须存在。)请参阅Numeric EXTERNAL在使用SQL * Loader字段列表参考。
请注意以下意见:好像换行之前实际上其次00110001
'1'
(字符00001101
)(视窗回车)结束行。看着你得到的结果,就必须有阅读这些两个字节,并解释它们作为0000110100110001
得到小数3377
。