sql >> データベース >  >> RDS >> Oracle

Sqlldr - 終了して囲まれたフィールドの後にターミネータが見つかりません

    プロバイダにデータ ファイルの修正を依頼することはできないかもしれませんが、最終的には、コントロール ファイルを少し更新して、すべてのフィールドではなくフィールドごとに「囲まれた」文字を指定する必要がある解決策を見つけました。

    私の場合、[first_name] フィールドにニックネームを二重引用符で囲んだ場合、それが読み込まれないという問題がありました。 (例:ジョナサン「ジョン」)。データ ファイルでは、名前は "Jonathon "Jon"" と表示されていました。そのため、値が二重引用符で囲まれ、値の一部 ("Jon") が二重引用符で囲まれているため、"enclosed by" はエラーをスローしていました。そのため、値を二重引用符で囲む必要があることを指定する代わりに、それを省略し、文字列から手動で引用符を削除しました.

    Load Data
    APPEND
    INTO TABLE MyDataTable
    fields terminated by ","     ---- Noticed i omitted the "enclosed by"
    TRAILING NULLCOLS
    (
      column1 enclosed by '"',   --- Specified "enclosed by" here for all cols
      column2 enclosed by '"',
      FIRST_NAME "replace(substr(:FIRST_NAME,2, length(:FIRST_NAME)-2), chr(34) || chr(34), chr(34))", -- Omitted "enclosed by".  substr removes doublequotes, replace fixes double quotes showing up twice.  chr(34) is charcode for doublequote
      column4 enclosed by '"',
      column5 enclosed by '"'
    )
      

    1. 列をNULLからNOTNULLに変更する方法

    2. MySQLクエリ監視bashスクリプトを作成する

    3. ユーザーがブラウザを閉じるか、あるページから別のページに移動した場合、PHPを使用してMySQLクエリを強制終了します

    4. Oracle PL / SQL:文字列からスペース文字を削除します