6

私はデータベースとプログラミングにかなり慣れていません。パソコン用語は苦手なので、よろしくお願いします。csvデータベースにロードしようとしているファイルがありOracleます。名前、電話番号、サービス日などのアカウント情報が含まれていますOracle 11g Release 2。これは私がこれまでに一歩一歩行ってきたことです..

1) SQLローダーを実行

必要な列を含む新しいテーブルを作成しました。例えば

create table Billing ( TAP_ID char(10), ACCT_NUM char(10), MR_ID char(10), HOUSE_NUM char(10), STREET char(30), NAME char(50)

2)テーブルが作成されたことを私に促しました。次に、Billing テーブルと同じディレクトリにあり、拡張子が .ctl のメモ帳でデータの制御ファイルを作成しました。GIS.csv は、データを取得するファイルであり、同じディレクトリにあり、Billing.ctl という名前が付けられています。

load data
infile GIS.csv
into table Billing
fields terminated by ','
(TAP_ID, ACCT_NUM, MR_ID, HOUSE_NUM, STREET, NAME)

3) コマンド ラインから sqlldr を実行して、制御ファイルを使用します。

sqlldr myusername/mypassword  Billing.ctl

これは私が立ち往生しているところです。私がやっていることの正確なビデオチュートリアルを見たことがありますが、次のエラーが発生します:

SQL*Loader-522: lfiopn failed for file (Billing.log)

ここで私が間違っている可能性があることについてのアイデアはありますか?

アップデート

ファイルを別のディレクトリに移動しただけで、以前のエラーを回避したと思います。ちなみに、Billing.ctl と GIS.csv は同じディレクトリにあります。

しかし、今私は別のエラーがあります:

'SQL*Loader-350: Syntax error at line 1.

キーワード LOAD が必要ですが、「SERV TAP ID」が見つかりました。"SERV TAP ID","ACCT NUMBER","MTR ID","SERV HOUSE","SERV STREET","SERV ^'

なぜそのエラーが発生するのかわかりません。私のbilling.ctlには負荷があります。

LOAD data
infile GIS.csv
into table Billing
fields terminated by ','
(TAP_ID, ACCT_NUM, MTR_ID, SERV_HOUSE, SERV_STREET, SERV_TOWN, BIL_NAME, MTR_DATE_SET, BIL_PHONE, MTR_SIZE, BILL_CYCLE, MTR_RMT_ID)

何かご意見は?

4

9 に答える 9

4

Sqlldrは、制御ファイルと同じディレクトリにログファイルを書き込みたいと考えています。しかし、明らかにそれはできません。おそらく必要な許可がありません。

LinuxまたはUnixを使用している場合は、sqldrを実行するのと同じ方法で次のコマンドを実行してみてください。

touch Billing.log

権限があるかどうかが表示されます。

アップデート

適切なコマンドラインは次のとおりです。

sqlldr myusername/mypassword control=Billing.ctl
于 2012-05-31T20:01:54.470 に答える
2

Oracle データベースに直接インポートしたい FAR_T_SNSA.csv という名前の csv ファイルがありました。このために、次の手順を実行しましたが、まったく問題なく動作しました。あなたが従う手順は次のとおりです。

ORACLE DATABASE に CSV ファイルをインポートする方法

  1. Oracle データベースにインポートする .csv 形式のファイルを取得します。ここでは「FAR_T_SNSA.csv」という名前です</li>
  2. .csv ファイルにあったのと同じ列名で SQL にテーブルを作成します。テーブル Billing を作成します ( iocl_id char(10), iocl_consumer_id char(10));

  3. sql*loder スクリプトを含む制御ファイルを作成します。メモ帳に次のようにスクリプトを入力し、拡張子 .ctl を付けて保存し、ファイルの種類を [すべての種類 (*)] として選択します。ここで、制御ファイルは Billing という名前です。スクリプトは次のとおりです。

    LOAD DATA
    INFILE 'D:FAR_T_SNSA.csv'
    INSERT INTO TABLE Billing
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS
    (
    iocl_id,
    iocl_consumer_id
    )
    
  4. コマンドプロンプトで次のコマンドを実行します。

    Sqlldr UserId/Password
    Control = “ControlFileName” 
    --------------------------------
    Here ControlFileName is Billing.
    
于 2012-12-18T09:50:57.117 に答える
1

SQL ローダーを呼び出すときに、ログファイル名を指定する必要があります。

sqlldr myusername/mypassword control=Billing.ctl log=Billing.log

Python内からSQLローダーを呼び出していたときに、この問題に遭遇していました。次の記事では、SQL ローダーを呼び出すときに指定できるすべてのパラメーターをキャプチャしますhttp://docs.oracle.com/cd/A97630_01/server.920/a96652/ch04.htm

于 2013-04-11T15:53:21.453 に答える
0

LOAD DATA INFILE 'D:\CertificationInputFile.csv' INTO TABLE CERT_EXCLUSION_LIST FIELDS TERMINATED BY "|" オプションで「」で囲みます ( CERTIFICATIONNAME, CERTIFICATIONVERSION )

于 2014-02-03T16:45:30.450 に答える
0

「1行目」 - WindowsとUnixの改行について何か?(上記のWindows 7を見たように)。

于 2012-06-01T12:31:40.510 に答える
0

テキストが次の場合: ジョーは「フレッドは彼の「妻」と一緒にここにいた」と言いました。
これは次のように CSV に保存されます。
「Joe said, ""Fred was here with his ""Wife"""".」
(ルールは、二重引用符がフィールド全体を囲み、二重引用符が 2 つの二重引用符に変換されることです)。したがって、単純なオプションの Enclosed By 句が必要ですが、十分ではありません。このルールにより、CSV は厳しいものになります。そのフィールドのローダーで Replace 句を使用できる場合もありますが、データによってはこれでは不十分な場合があります。多くの場合、Oracle にロードするために CSV の前処理が必要です。または、XLS として保存し、Oracle SQL Developer アプリを使用してテーブルにインポートします。1 回限りの作業には適していますが、スクリプトにはあまり適していません。

于 2013-05-30T20:22:06.643 に答える