2017-01-24 9 views
0

.CSVファイルをOracleテーブルにインポートするplsqlストアドプロシージャを手伝ってもらえますか?ファイル名とテーブル名を受け入れるプロシージャを作成したい。CSVをOracleデータベースにインポート

注:私はUTF-8のファイル形式

+0

は、データベース・サーバー上のファイル(またはそれへのアクセス)がある、または一部のデスクトップに

GRANT READ, WRITE ON DIRECTORY imp_data TO PUBLIC; 

を付与する必要がありますか? –

+0

デスクトップのみです。 – vasanti

答えて

0

を使用していますが、ディレクトリを作成し、そのファイルを持っているフォルダを指すように設定しなければなりません。

create or replace procedure get_file (p_dir varchar2, p_file varchar2) 
is 
line varchar2(4000); 
v_file utl_file.file_type; 
begin 
    v_file := utl_file.fopen(p_dir,p_file,'R'); 
    loop 
     utl_file.get_line(v_file,line); 
     -- insert code here 
     dbms_output.put_line(line); 
    end loop; 
    exception when others then 
      -- The only way to know when we reach the end of the file is to get and exception 
      utl_file.fclose(v_file); 
end; 
+0

しかし、UTF8ファイルタイプを持っています – vasanti

+0

そして、私のコードに基づいて、何が問題ですか? –

1

データベースに格納されているpl/sqlプロシージャは、デスクトップ上で操作できません。あなたは、この目的の

  • ため

    • 使用SQL*Loaderユーティリティは、データベースとでアクセスできる場所にファイルを送信読み込み、ファイルを解析し、あなたのテーブル
    • にデータを挿入するプログラムを書くこと使用例external tableまたは私は簡単なの方法は、外部表を使用していると思わ
  • 0

    ファイル(のような答えの一つでget_file)を読み取るために、いくつかの手順を記述します。これはテーブルのように扱われるが、ファイルからデータを読み込むオブジェクトです。それを達成するためには、必要な権限をすべて作成する必要があります。

    CREATE OR REPLACE DIRECTORY imp_data AS 'c:\tmp\'; 
    

    したり、サーバー上の他のパスのディレクトリ: だから最初directortを作成します。次は今、最良の部分:)

    CREATE TABLE imp_data (
        ID NUMBER(20), 
        NAME VARCHAR2(50), 
        CITY VARCHAR2(200) 
    ) 
    ORGANIZATION EXTERNAL 
    (TYPE ORACLE_LOADER --this is the read-file driver 
        DEFAULT DIRECTORY imp_data 
        ACCESS PARAMETERS 
        RECORDS DELIMITED BY NEWLINE 
        BADFILE 'bad' 
        LOGFILE 'log' 
        FIELDS TERMINATED BY ',' -- CSV terminate mark 
        (ID, NAME, CITY)) -- the order of the columns in the file 
        LOCATION ('dane.csv')) -- name of file 
    PARALLEL 5 
    REJECT LIMIT 200; -- numbers of bad row before break import 
    
    関連する問題