gpt4 book ai didi

oracle - 通过 SQLLDR 在 Oracle 中加载数据

转载 作者:行者123 更新时间:2023-12-05 03:02:40 26 4
gpt4 key购买 nike

我想通过 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(Windows 回车) 在换行符之前。查看您得到的结果,它必须读取这两个字节并将它们解释为 0000110100110001 以获得十进制 3377

关于oracle - 通过 SQLLDR 在 Oracle 中加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54615537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com