首页 > 解决方案 > oracle 12c 中的 SQL 加载程序问题

问题描述

尝试通过 sql loader 加载数据时出现以下错误,有人可以帮助解决此问题。

错误:

C:\Users\Raghu>sqlldr hr/hrschema control=D:\sql\1.csv
SQL*Loader: Release 12.2.0.1.0 - Production on Sun Sep 29 09:03:41 2019
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
SQL*Loader-500: Unable to open file (D:\sql\1.csv)
SQL*Loader-553: file not found
SQL*Loader-509: System error: The system cannot find the file specified.
C:\Users\Raghu>

.ctl 文件:

load data infile 'd:\sql\1.csv'
TRUNCATE
into table students
fields terminated by "|"
(SID,CNAME)

数据文件:

SID|CNAME
10|Java
20|UNIX
30|SQL
40|PLSQL
50|AI
60|PEGA
70|RPA
80|C
90|C++
100|Python

标签: oraclesql-loader

解决方案


无法打开文件 (D:\sql\1.csv) SQLLoader-553:找不到文件 SQL*Loader-509:系统错误:系统找不到指定的文件。

这很简单;目录中没有命名1.csv的文件 d:\sql。确保它存在并且您有权访问它。


除此之外,它(大部分)看起来不错并加载数据。就是这样:

SQL> create table students (sid number, cname varchar2(20));

Table created.

SQL> $sqlldr scott/tiger control=test10.ctl log=test10.log

SQL*Loader: Release 11.2.0.2.0 - Production on Ned Ruj 29 10:46:51 2019

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

Commit point reached - logical record count 10
Commit point reached - logical record count 11

SQL> select * From students;

       SID CNAME
---------- --------------------
        10 Java
        20 UNIX
        30 SQL
        40 PLSQL
        50 AI
        60 PEGA
        70 RPA
        80 C
        90 C++
       100 Python

10 rows selected.

SQL>

“大部分”与包含以下行的日志文件有关:

Record 1: Rejected - Error on table STUDENTS, column SID.
ORA-01722: invalid number

它与 CSV 文件中的第一行有关 - 它包含列标题,而SID不是数字。它很容易通过添加 - 作为控制文件的第一行来处理

options (skip=1)

推荐阅读