gpt4 book ai didi

oracle - 第一条记录上的 SQL 加载程序错误

转载 作者:行者123 更新时间:2023-12-04 20:34:31 25 4
gpt4 key购买 nike

我正在尝试将文件中的数据加载到 Oracle 中的表中,但我仅在第一条记录上收到错误,第二条记录被插入。
记录 1:拒绝 - 表 Ing_Details 的 INGREDIENT_ID 列出错。
ORA-01722: 无效号码

这是控制文件

LOAD DATA
INFILE 'C:\Users\Appdata\Desktop\SQl Loader\ing1.txt'
BADFILE 'C:\Users\Appdata\Desktop\SQl Loader\bad_orders.txt'
INTO TABLE Ing_Details
FIELDS
TERMINATED BY "\t"
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
INGREDIENT_ID NULLIF INGREDIENT_TYPE_ID=BLANKS,
INGREDIENT_TYPE_ID NULLIF INGREDIENT_TYPE_ID=BLANKS,
Status NULLIF Status=BLANKS,
Organic NULLIF Organic=BLANKS
)

表结构
Ingredient_ID              NUMBER NOT NULL,
Ingredient_Type_ID NUMBER NOT NULL,
Status NUMBER (10) NOT NULL,
Organic NUMBER (10) NOT NULL

日志文件:
SQL*Loader: Release 11.2.0.2.0 - Production on Mon Jul 11 12:25:59 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Control File: C:\Users\Appdata\Desktop\ingredient2.ctl
Data File: C:\Users\Appdata\Desktop\SQl Loader\ing1.csv
Bad File: C:\Users\Appdata\Desktop\SQl Loader\bad_orders.txt
Discard File: none specified

(Allow all discards)

Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional

Table Ing_Details, loaded from every logical record.
Insert option in effect for this table: INSERT
TRAILING NULLCOLS option in effect

Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
INGREDIENT_ID FIRST * , O(") CHARACTER
NULL if INGREDIENT_TYPE_ID = BLANKS
INGREDIENT_TYPE_ID NEXT * , O(") CHARACTER
NULL if INGREDIENT_TYPE_ID = BLANKS
STATUS NEXT * , O(") CHARACTER
NULL if STATUS = BLANKS
ORGANIC NEXT * , O(") CHARACTER
NULL if ORGANIC = BLANKS

Record 1: Rejected - Error on table Ing_Details, column INGREDIENT_ID.
ORA-01722: invalid number

最佳答案

检查数据文件的编码。 SQLLDR 似乎对 BOM 的 UTF-8 文件有问题,因为它将 3 个字节添加到文件的开头 ( UTF-8 vs UTF-8 w/o BOM )。这些字节包含在第一个定义的字段中(根据 .ctl 文件),然后 Oracle 无法将其转换为 NUMBER .通过在数据文件中添加和跳过空白标题行,您基本上消除了 3 个额外字节的影响。

检查文件编码的一种简单方法是在 Notepad++ 中打开文件并打开编码菜单项。

Notepad++

如有必要,请选择 Encode UTF-8 without BOM更改文件编码。

关于oracle - 第一条记录上的 SQL 加载程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38301487/

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