問題タブ [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.
oracle - 本当に列の処理をスキップする方法は?
(CSVファイルから)データをOracleデータベースにロードするために、SQL*Loaderを使用します。
これらのデータを受け取るテーブルにはvarchar2(500)
、と呼ばれる列がありますCOMMENTS
。何らかの理由で、CSVファイルからこの情報を無視したいと思います。したがって、私はこの制御ファイルを作成しました。
COMMENTS
データベースのフィールドは常にに設定されているため、このコードは正しく機能しているようnull
です。
ただし、CSVファイルに、対応するCOMMENTS
フィールドが500文字の制限を超えるレコードがある場合、SQL*Loaderからエラーが発生します。
私のフィールドの処理を本当に除外する方法はありますか?COMMENTS
database - Oracle SQLLoader(sqlldr)のインポートで引用符と改行をエスケープするにはどうすればよいですか?
FIRST:はい、CONCATENATEとCONTINUEIFについては知っていますが、ドキュメントを理解するのに十分な知識がない可能性があります。私は彼らが私の問題をどのように解決するかを「理解」していません。ありがとうございました...
私は、sqlldrを介してOracleDBにインポートするためのファイルを作成する必要がある立場にあります。
列は「〜」で区切る必要があります(質問しないでください)。ファイルファイルを作成する際に、引用符と改行に関してsqlldrがどのように動作するかについていくつか懸念があります。
単純な行に列の値を含める場合:
これをファイルに出力するにはどうすればよいですか?私の最初の推測は
CTLファイルで指定された「〜」オプションで囲まれたフィールドでインポートするのは簡単だと思います。処理方法がわからないのは、ファイルを作成するときの「いいね」の周りの引用符です。さらに逃げる?どうやって?
追加のボーナス質問:フィールドにはラインブレーキが含まれる場合があります。「生」と書いてあると
これらを「つなぎ合わせる」ために使用できるオプションがCTLファイルにありますか?ブレークは異なる列で発生する可能性があり、レコードまたは列ごとに複数のブレークが存在する可能性があります。
前もって感謝します!
c# - SQLローダーでインポートするためのデータの改行を処理する方法
私はフロントエンド開発者であり、後で別のOracleデータベースにインポートするためにOracleストアドプロシージャからテキストファイルにデータをエクスポートするC#アプリケーションを作成しています。データはSQLローダー(sqlldr)で読み込まれ、SQLローダーで処理しやすい形式でファイルを出力できるように、そのツールの機能を理解しようとしています。
列データの改行を処理する方法がわかりません。一部の列は説明であり、改行が含まれている場合があります。データの改行の数が一定でない可能性を処理するためのオプションがSQLローダーに見つかりません。
センテンス値を使用してテキストファイルのレコードを終了または開始してから、CONTINUEIFを使用できるようです。次に、データ内のセンテンス値の処理の問題が発生します。
この特定のアプリケーションにとって重要ではありませんが、データの忠実度を低下させたくないので、私はただ休憩を取り除くことを躊躇しています。
これにどのようにアプローチできるかについてのアイデアはありますか?
ありがとう!
oracle - OracleSqlLoader制御ファイルの問題
SQLローダーを使用していくつかのデータを読み込もうとしています。これが私のコントロール/データファイルの先頭です:
...他の多くのデータライン。
問題は、SQLローダーが指定しているデータ型を認識しないことです。これはログファイルです:
...多くの同様のエラー。charデータを数値列に挿入しようとすると予想されます。
私はデータ型の仕様、他のすべての数値の仕様、そして常に同じ問題を試していません。何か案は?
また、Rowsパラメーターを変更する理由についてのアイデアはありますか?
oracle - Oracle Sql Loader を使用してタイムスタンプ フィールドに現在のタイムスタンプを入力する方法
SQL ローダーを使用してパイプ区切りファイルを読み込んでおり、データを入力しているテーブルに LAST_UPDATED フィールドを入力したいと考えています。私の制御ファイルは次のようになります。
LAST_UPDATED フィールドについては、SYSTIMESTAMP と CURRENT_TIMESTAMP を試しましたが、どちらも機能しません。ただし、SYSDATE は正常に動作しますが、時刻がわかりません。
私は SQL Loader を初めて使用するので、SQL Loader でできることとできないことについてほとんど知りません。ありがとう。
oracle - SQL * Loaderの従来のロードパスを使用するのはなぜですか?
SQL * Loaderの従来のパスについての私の理解は、それがINSERTステートメントを生成し、それらをデータベースに送信するだけであるということです。プログラムでSQLステートメントを生成してデータベースに対して実行するだけでなく、これを使用することでパフォーマンス上の利点はありますか?
oracle - sqlldrの実行後に外部キーが無効になるのはなぜですか?
ビルドプロセス中に、sqlldrを実行して、データベースにサンプルデータを入力します。sqlldrがアクセスするすべてのテーブルで、sqlldrの実行後に外部キーが無効になります。
このAskTomの投稿によると:
sqlldrは、主キーではなく、他のテーブル(外部キーなど)に関連する制約のみを無効にします。
SQLLDRは、ITが無効にした制約のみを再度有効にし、自分で行った制約は再度有効にしません。
これは、外部キーを有効にする必要があることを意味します。
すべてのsqlldr制御ファイルは次のファイルに似ています。
カウントは、データファイルのrows
行数よりも意図的に大きくなっています。これは、小さい場合、主キーが破損しているためです。
ドキュメントが示唆しているように、sqlldrが外部キーを再度有効にしないのはなぜですか?
必要に応じてインデックスを再度有効にするSQLを作成しています。なぜこれが起こっているのか知りたいのですが。
従来のロードパスを使用することも問題ありませんが、ビルドプロセスに2分かかるため、可能であればそれを避けたいと思います。
oracle - SQL*Loaderで移植不可能なデータ型を使用する場合、何を知っておく必要がありますか?
SQL*Loaderのリファレンス マニュアルのセクションを読みましたが、ちょっと理解できませんでした。私たちのクライアントはすべて x86 を実行しているので、バイト順について心配する必要はないと思います。ただし、32 ビット OS で実行している顧客もいれば、64 ビット OS で実行している顧客もいます。これが原因で問題が発生しないようにするには、正確に何をする必要がありますか?
oracle - SQL * Loaderのロード中にトリガーを再度有効にするものを追跡するにはどうすればよいですか?
ログに次のようなメッセージがたくさん表示されているようです。
これは私のローカル開発マシン上にあるので、これらのテーブルに挿入しようとしているものは他にないはずです。この原因を突き止めるにはどうすればよいですか?また、トリガーが再度有効になるのを防ぐ方法はありますか(少なくとも、スクリプトのどこかでエラーが発生するかどうかを確認するため)?
sql - SQL ローダー データ ファイル内の囲み文字をエスケープするにはどうすればよいですか?
次のような行を含む SQL*Loader 制御ファイルがあります。
通常、引用符を使用しますが、複数行の文字列内で使用すると、emacs の python 構文の強調表示が壊れてしまうようです。問題は、次のADDRESS_LINE_2
ような行があるため、100 万レコードのうち 7,000 レコードしかロードされていない列をロードしていることです。
...(その他の列),Apt #2,(その他の列)...
もちろん、これはエラーを引き起こしています。これが起こらないように囲み文字をエスケープする方法はありますか? それとも、より良い囲み文字を選択する必要がありますか?
ドキュメントに目を通しましたが、これに対する答えが見つからないようです。