Csv 连接到数据库时出现无效的目录路径错误

Csv 连接到数据库时出现无效的目录路径错误,csv,plsql,oracle11g,data-import,Csv,Plsql,Oracle11g,Data Import,我正在使用Oracle11g和sqldeveloper来运行/编辑查询 我的桌子是: ID FIRST_NAME LAST_NAME MAJOR CURRENT_CREDITS 10008 A Dd Computer Science 2 10009 B DD History 3 10010 D

我正在使用Oracle11g和sqldeveloper来运行/编辑查询

我的桌子是:

ID     FIRST_NAME   LAST_NAME    MAJOR                 CURRENT_CREDITS
10008   A            Dd          Computer Science         2
10009   B            DD          History                  3
10010   D           dd           Computer Science         3
10011   C           ad           Economics                3
10012   D           Da           History                  3
10013   E           df           History                  3
上表是以CSV格式(lect.CSV)存储在“D:\1Deepak\Data”中

我已经创建了以下过程以在oracle中导入csv文件,但是在错误下导入csv文件不起作用:

连接到数据库r

ORA-29280:目录路径无效

ORA-06512:“系统加载讲师”第39行

ORA-06512:在第2行

进程已退出

从数据库r断开连接

代码:

create user D identified by d 
CREATE DIRECTORY log_dir AS 'D:\1Deepak\Data'; 
Grant all privileges to D;
Grant Read, Write on Directory log_dir to D;

CREATE TABLE lecturer (
  id               NUMBER(5) PRIMARY KEY,
  first_name       VARCHAR2(20),
  last_name        VARCHAR2(20),
  major            VARCHAR2(30),
  current_credits  NUMBER(3)
  );

CREATE OR REPLACE PROCEDURE Loadlecturer
AS
p_TotalInserted number;
  v_FileHandle UTL_FILE.FILE_TYPE;
  v_NewLine  VARCHAR2(100);  -- Input line
  myFirstName lecturer.first_name%TYPE;
  v_LastName lecturer.last_name%TYPE;
  v_Major lecturer.major%TYPE;
  v_FirstComma NUMBER;
  v_SecondComma NUMBER;
BEGIN
  v_FileHandle := UTL_FILE.FOPEN ('Log_dir','Lect.csv', 'r');
  p_TotalInserted := 0;
  LOOP
    BEGIN
      UTL_FILE.GET_LINE(v_FileHandle, v_NewLine);
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        EXIT;
    END;

    v_FirstComma := INSTR(v_NewLine, ',', 1, 1);
    v_SecondComma := INSTR(v_NewLine, ',', 1, 2);

    myFirstName := SUBSTR(v_NewLine, 1, v_FirstComma - 1);
    v_LastName := SUBSTR(v_NewLine, v_FirstComma + 1,
                         v_SecondComma - v_FirstComma - 1);
    v_Major := SUBSTR(v_NewLine, v_SecondComma + 1);

    INSERT INTO lecturer (ID, first_name, last_name, major) VALUES (1, myFirstName, v_LastName, v_Major);

    p_TotalInserted := p_TotalInserted + 1;
    dbms_output.put_line(p_totalinserted);
  END LOOP;
  UTL_FILE.FCLOSE(v_FileHandle);
 Exception 
  WHEN OTHERS THEN
    UTL_FILE.FCLOSE(v_FileHandle);
    RAISE;
END Loadlecturer;

有人能帮我弄清楚为什么会出现上述错误吗?

您的Oracle服务器真的有目录
D:\1Deepak\Data
?Oracle是否在您的PC上本地运行?一个常见的错误是期望数据库服务器上的utl_文件读取桌面上的文件。
utl_file.FOPEN('Log_dir',…
可能应该是
utl_file.FOPEN('LOG_DIR',…
-ie.目录名必须是大写。@William Robertson yes oracle安装在本地计算机上laptop@Boneist…您的建议很有效..感谢所有人的建议您的Oracle服务器是否真的有目录
D:\1Deepak\Data
?Oracle是否在您的PC上本地运行?常见的错误是数据库服务器上的utl_文件来读取桌面上的文件。
utl_文件.FOPEN('Log_dir',…
可能应该是
utl_文件.FOPEN('Log_dir',…
)-ie。目录名必须是大写。@William Robertson yes oracle安装在本地计算机上laptop@Boneist你的建议很管用谢谢大家的建议