区切り文字で長い SQL 式を分割します。

区切り文字で長い SQL 式を分割します。

コンテキスト

SQL * Plusを使用して長い行(8,000文字を超える)を含むダンプを取得しようとすると、エラーが発生しますSP2-0027: Input is too long (> 2499 characters)。これはハードコードされた制限であるため、克服することはできません。

予想されるソリューション

,最後の(カンマ)文字の予想幅よりも長いbashと分割行で入力をストリーミングしたいと思います。

だから私は次のようなものが必要です

cat my_dump.sql | *magic_command* | sqlplus system/oracle@xe

詳細

  1. 最新バージョンでは、最大4999文字まで行を収容できることがわかっていますが、まだ行が長くなります(grep '.\{5000\}' my_dump.sql | wc -l)。
  2. ダンプを手動で更新することは実際には可能ではありません。
  3. 私は試してみましたが、trこれは私が望んでいないすべての行を分割します
  4. fmt試してみましたが、foldカスタム区切り文字を使用することは不可能なようです。
  5. 現在見ていますが、「2500文字を超えると、最初の2500文字以内で最後の一致を探します」sedの正規表現が見つからないようです。,

ベストアンサー1

次のようにしてみてください。

sed -re '/.{2500}/ s/.{,2500},/&\n/g'

説明する:

  • /.{2500}/行に2,500文字(またはそれ以上)が含まれている場合...
  • s/.{,2500},/&\n/g最大2,500文字を変更して,改行を追加してください。

これが代替不可能な「、」を置き換えても驚かないでしょう。

おすすめ記事