問題タブ [sql-loader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1295 参照

sql - txt ファイルから Oracle データベースへのデータのインポート

シナリオ - .txt ファイルには 2000 のレコードがあり、3 つの列 (名前、電話番号、都市) があります。それらをOracleデータベースvai SQL Loaderにインポートする必要があります。質問 - .txt ファイルから、50 から 100 のレコードを Oracle データベースにインポートしたくありません。どうすればこれを達成できますか? そして、電話番号の列をnullに保ちたいです。

0 投票する
1 に答える
261 参照

sql - 可変数の物理レコードを単一の物理レコードに関連付けるSQLローダー

次のデータがあります。

ここで、別の「A」レコードまたは非「B」レコードが検出されるまで、「A」で始まるすべてのレコードを「B」で始まるレコードに関連付けたいと考えています。たとえば、上記のデータから、次のデータ (2 レコード) を取得したいと思います。

A レコードに続く B レコードの数は可変です。つまり、(A レコードの後に​​任意の数の B レコードが続く場合があります (以下のデータでは 3 つ)。

したがって、結果の出力は次のようになります

SQLローダーを使用して上記を行うことは可能ですか?. ヘルプ/ポインタは大歓迎です。

編集:句を使用することを考えてCONTINUEIFいましたが、以前に取得したレコードを削除する方法がないようです。たとえば、私が使用する場合、

「マンゴーティーブロットasdf」を一度に取得しますが、取得しません

0 投票する
2 に答える
22470 参照

oracle - sqlldr LRM-00112: パラメータ'control'に複数の値は許可されていません

次のコードを含むシェル スクリプトがあります。

変数 $ws_usr_eva、$ws_pass_eva、および $ws_esq_eva は、sqlldr を実行する前に入力されます。内容は確認済みでOKです。

そのため、スクリプトを実行すると、次のように表示されます: LRM-00112: 複数の値がパラメーター 'control' に許可されていません

変数なしでスクリプトを実行しようとしましたが、正常に動作します。

構成ファイルから変数を読み取るため、sqlldr で変数を使用する必要があります。

私も sqlldr userid=$ws_usr_eva/$ws_pass_eva@$ws_esq_eva を試してみましたが、うまくいきませんでした。

手伝って頂けますか?

前もって感謝します。

0 投票する
2 に答える
484 参照

java - PHP 同期

これに対する最善の解決策はわかりませんが、これが私がやったことです。

PHP を使用して、zip ファイルを含むディレクトリを調べています。

これらの zip ファイルには、SqlLoader (sqlldr) を介して Oracle データベースにロードされるテキスト ファイルが含まれています。

コマンドラインから複数の PHP プロセスを開始して、これらの zip ファイルをデータベースにロードできるようにしたいと考えています。

他の「php ローダー」プロセスが実行されている場合、重複して同じ zip ファイルをロードしようとするべきではありません。1 つのプロセスを開始して各 zip ファイルを処理できることはわかっていますが、同時にロードできるように、受信する zip ファイルに対して新しいプロセスを開始したいと考えています。

今、'filename.ext.lock' という名前のファイルを作成して、zip ファイル、ディレクトリ、または一般的なテキスト ファイルを 'ロック' するクラスを作成しました。起動する他のプロセスは、ファイルがこのように「ロック」されているかどうかを確認します。ロックされている場合は、そのファイルをスキップして別のファイルに移動して処理します。

ディレクトリを使用して「プロセスID」ファイルを作成するクラスを作成しました。これにより、各PHPプロセスは、ログの目的で使用できるIDを持ち、どのPHPプロセスがファイルをロックしたかを識別できます。

私はWindowsマシンを使用していますが、これをubuntuマシンにする予定はありません.pcntlを提案する人のために.

他にどのような解決策がありますか? ロックファイルが作成されようとしている可能性があり、コンテキストスイッチが発生し、最初のPHPプロセスがロックファイルを作成する前に別のPHPプロセスがファイルを「ロック」するため、これは完全に同期されていないことがわかります。

このソリューションを改善するにはどうすればよいか、アイデアを教えてください。Java実装?アーラン?

また、言及するのを忘れていましたが、PHP プロセスは DB に接続して、SqlLoader を介してロードしようとしているファイルに関するメタデータをフェッチします。それは重要ではないと思いますが、念のため。

簡単なメモ: sqlldr はロードしているテーブルをロックし、複数のプロセスが同じテーブルにロードしようとするとボトルネックになることを認識しています。この問題を軽減するために、現在ロードされているテーブルの後にファイル名を含むディレクトリを作成する予定です。テーブルのロードが完了すると、それぞれのファイルが削除され、他のプロセスがそのテーブルを安全にロードできるかどうかをチェックします。

追加情報: 7zip を使用してファイルを解凍し、php の exec を使用してこれらのコマンドを実行しています。

exec を使用して sqlldr も呼び出しています。

zip ファイルは巨大 (1 GB) になる可能性があり、1 つのテーブルをロードするのに最大 1 時間かかる場合があります。

0 投票する
7 に答える
32739 参照

oracle - OraclesqlldrがOracle10および11のインスタンス修飾子としてTNSエントリを受け入れることは可能ですか?

Oracle 10/11にバンドルされているsqlldrを使用して完全修飾TNSエントリを使用することは可能ですか?

たとえば、SQLPlusでは次のようになります。

ただし、sqlldr(SQLローダー)を使用すると、TNSエントリを直接使用する際に問題が発生するようです。具体的には:

生成されるエラーメッセージは次のとおりです。

TNSエントリを引用符で囲んでカプセル化しようとすると、同じエラーが発生します。

sqlldrのドキュメントを確認し、「userid」コマンドライン引数を使用しようとしましたが、役に立ちませんでした。具体的には:

Oracleがユーザーをローカルインスタンスに強制して、リモートホストにデータをプッシュする際のI/Oを軽減することを望んでいることは理にかなっています。しかし、サポートされている構文の逸脱はそれほど直感的ではありません。他の誰かが同様の問題を経験していますか?

0 投票する
2 に答える
2425 参照

oracle - Oracleでsqlldrを使用してデータをインポートする

次のようなtxtファイルがあります。1 番目の machine_no、2 番目の emp_no、3 番目の shift_type (1 はエントリ、3 は退出、4 はエントリ (複数のエントリ)、5 は退出 (複数のエントリ)、5 番目の work_date、6 番目は時間です。

次のように、txtファイルからOracleテーブルにデータをロードしたい:

コードでそれを行う最も簡単で最速の方法を教えてください。あなたの助けに感謝。

0 投票する
2 に答える
3034 参照

oracle - Oracleでsqlldrを使用して条件付きでデータをロードするにはどうすればよいですか

次のようなtxtファイルがあります。1st machine_no、2nd emp_no、3rd shift_type(エントリー1、エグジット3)、4th work_date、4thが時間です。

テーブルにデータをロードしたい。時間を設定するフィールドが 1 のtime1場合、時間 を設定するフィールドが 3 の場合です。制御ファイルでこれを設定する方法を教えてください。time_typetime2time_type

よろしくお願いします..マッキー。

以下は、オラクルのtxtファイルとテーブルです。

表は次のとおりです。

0 投票する
1 に答える
1826 参照

python - Pythonのsubprocess.Callメソッドの出力をコンソールではなくファイルにリダイレクトする方法は?

サブプロセスモジュールでpythonのCallメソッドを使用してsqlldrコマンドを実行しています

上記のスクリプトを実行すると、sqlldr コマンドの出力がコンソールに出力されます。これをファイルにリダイレクトするか無視します。sqlldr は指定されたログにも書き込むためです。

出力をファイルにリダイレクトするためにこのようなことを試みましたが、この行でエラーをスローしました

これを達成する方法は?

0 投票する
2 に答える
9312 参照

mysql - MySQL の SQL ローダーに相当

Oracle の SQL ローダーは非常に便利で、高速で効率的です。SQLローダーに相当するMySQLは何ですか?

0 投票する
1 に答える
2773 参照

python - 非常に巨大なログファイルのロード中にOracleSQLローダーエラーが発生しました

ディレクトリ内のログファイルをループし、oraclesqlloaderを使用してログファイルをoracleデータベースにロードするPythonスクリプトがあります。スクリプトは正しく機能し、sqlloaderも機能します。

ただし、約200kレコードをロードした後、この例外を除いてロードは失敗します。

なぜこれが発生しているのかわかりません。テーブルの表スペースに対応するデータ・ファイルを確認しましたが、自動拡張がtrueに設定されています。他に何が理由でしょうか?

sqlldr」コマンドでは、rows=1000およびDirect=Trueであるため、ロードされた1000レコードごとにコミットします。この数を変えてテストしましたが、同じエラーが発生します。