ORACLEのSQLLoaderで「拡張子を追加中にエラーが発生しました」のエラーに対処する
実際の現場で障害、ではないですがORACLEのSQLLoderを使用してのCSVファイル取込処理にてエラーが発生したので対処内容を書いていきます。
SQLLoaderで「拡張子を追加中にエラーが発生しました」のエラーに対処
今回使用した環境
サーバA : Windows Server 2019 ORACLE 19c
サーバB : Windows Server ( バージョン未調査 )
エラー発生の経緯
通常運用でサーバA ( ORACLEのDBサーバ ) は、月次でサーバBに置いてあるCSVファイルのパスをSQLLoderのパラメータで指定してデータ取込処理を行っています。
サーバBにはCSVファイルを参照するための共有フォルダが作ってありました。
しかし今回、サーバBが更改となりサーバBの仕様で共有フォルダが作れないこととなりました。
エラーとなったコマンド
sqlldrのコマンドは以下のようなイメージですが「data」のパラメータにはBサーバのCSVファイルを指定しています。
sqlldr userid=user/pass@testdb data=\\serverB\D$\共有フォルダ\data.csv
共有フォルダとして参照しているわけではなく、管理共有として「D$」で参照しています。
エラー内容
SQL*Loader-503: ファイル\\serverB\D$\共有フォルダ\data.csvに拡張子を追加中にエラーが発生しました
SQL*Loader-567: ファイル名を導出できません
SQL*Loader-509: システム・エラー: この操作を正しく終了しました。
原因
サーバB更改前後で以下のように「data」パラメータを変えたんですよね。
更改前:data=\\serverB\共有フォルダ\data.csv
更改後:data=\\serverB\D$\共有フォルダ\data.csv
エラーの内容をネット検索すると「指定したファイル名が長すぎるか、ファイル名に無効な文字が含まれている可能性があります」と出てきます。
ファイル名は長くはないので、ファイル名に無効な文字…「$」が怪しいですね。
対策
サーバBに共有フォルダを実際に作らせてもらって成功するかどうか試したかったのですが、サーバBは他社のサーバなので試すことはできなかったです。
しょうがないのでサーバBからサーバAへCSVファイルをコピーし、そのコピーしたCSVファイルをSQLLoderのパラメータに指定することでうまくいきました。
以上となります。
ここまでお読みいただきありがとうございました。