2017-05-11 12 views
0

私は、自動的にテーブルにHTTP URLで(たとえばhttp://example.com/report.csv)とロード上に位置するcsvファイルを解析の必要性を持っています。どのように私はPL/SQLを使用してそれを行うことができますか?PL/SQLの解析のcsvファイル

+1

を使用してCSVのCLOBは、SOコードの書き込みサービスではありません得ることができます。答えが必要な場合は、行ったことと正確にどこに問題があるのか​​を教えてください。あなたは見[ツアー](http://stackoverflow.com/tour)および[ヘルプ]を持つことができます(http://stackoverflow.com/help) – Nitish

+0

は、パッケージを見てください 'utl_http' –

+0

@FrankOckenfuss - ありがとう!私はそれを徹底的に調べます。 –

答えて

1

外部テーブルを使用することをお勧めします。

まず、あなたがあなたのファイルを保存するディレクトリ(read more)を定義します。

CREATE OR REPLACE DIRECTORY my_files AS '/usr/bin/my_files'; 

そして、作成したディレクトリを参照(read more)外部表を作成します。

CREATE TABLE SAMPLE_EXTERNAL_TABLE 
    (C1 VARCHAR2(4000 BYTE), 
    C2 VARCHAR2(4000 BYTE), 
    C3 VARCHAR2(4000 BYTE), 
    C4 VARCHAR2(4000 BYTE), 
    C5 VARCHAR2(4000 BYTE)) 
    ORGANIZATION EXTERNAL 
    (TYPE ORACLE_LOADER DEFAULT DIRECTORY "my_files" ACCESS PARAMETERS 
    (RECORDS DELIMITED BY '\r\n' 
    CHARACTERSET AL32UTF8 
    SKIP 1 --SKIPPING FIRST ROW(HEADER) 
    fields terminated BY ';' 
    optionally enclosed BY '"' 
    missing field VALUES are NULL 
    ) LOCATION ("my_files":' report.csv')) ; 

今あなたがすることができますあなたのCSVファイル(外部テーブルから)のすべてのレコードをターゲットテーブルに挿入します:

INSERT INTO SAMPLE_TARGET_TABLE 
    (COLUMN1, COLUMN2, COLUMN3, COLUMN4) 
SELECT * FROM SAMPLE_EXTERNAL_TABLE; 
1

http://www.talkapex.com/2017/04/query-csv-data-using-apex-5-1-apis/から)次のコードは、SQLでCSVファイルを解析する方法を示しています。

select fname, lname, dept 
from 
    (
    select 
     rownum rn, 
     rtrim(regexp_substr(column_value, '([^,])*(,)?', 1, 1), ',') fname, 
     rtrim(regexp_substr(column_value, '([^,])*(,)?', 1, 2), ',') lname, 
     rtrim(regexp_substr(column_value, '([^,])*(,)?', 1, 3), ',') dept 
    from table(apex_string.split(:data,chr(10))) 
) 
where rn > 1 

あなたはまたapex_web_service.make_rest_requesthttps://docs.oracle.com/database/apex-5.1/AEAPI/MAKE_REST_REQUEST-Function.htm#AEAPI1955

+1

make_rest_requestは有望ですね。私はそれを試みるつもりです。ありがとう。 –

関連する問題