- PR -

sql Loader-350エラーが出てしまう

1
投稿者投稿内容
始まり
常連さん
会議室デビュー日: 2006/10/03
投稿数: 31
投稿日時: 2008-06-30 17:29
環境は
Windows2003 server
oracle9i
です。


コマンドプロントから
sqlldr user/pass@sidを入力して
mas_loader.shというファイルを実行させようとしたのですが、

実行すると
--------------------------------------------
SQL*Loader-350: 行1に構文エラーがあります。
英数字以外の無効な文字列があります
#!/bin/sh
--------------------------------------------
上記のようなメッセージが表示されてしまいます。

SQL loderの使い方がいまいちよく分からず、調べても
「○○.ctlを読み込ませる」は見つかるのですが「○○.sh」を使った場合が見つかりません。

コメント行と思しき箇所を削除してみるも、350エラーが表示されてしまいます。
どのようにしたらいいか手詰まり状態で、どこを調べればいいのか分かりません

以下mas_loader.shのソースです。

ご教授よろしくお願いします。
-------------------------------------------------------------------------------

#!/bin/sh
#
# マスタ・登録シェル
#

######################################################################
# 各種環境変数
######################################################################

MASNAME=$1

USERID=user/pass@sidr
CTRLFILE=../control/$MASNAME.ctl
DATAFILE=../data/$MASNAME.csv
BADFILE=../error/$MASNAME.bad
DISCARDFILE=../error/$MASNAME.dis
LOGFILE=../log/$MASNAME.log
##export MASNAME DATANAME USERID CTRLFILE DATAFILE BADFILE DISCARDFILE
STS=0

##################################################################
# 処理開始
##################################################################

# 開始ログ
echo "【$MASNAME】の反映を開始します。"

# CTRLFILEファイルの存在チェック
if [ ! -f $CTRLFILE ] ; then
echo ">・コントロールファイル[$CTRLFILE]が存在しません。"
echo ">・処理を中断しました。"
exit 0
fi

# DATAFILEファイルの存在チェック
if [ ! -f $DATAFILE ] ; then
echo ">・データファイル[$DATAFILE]が存在しません。"
echo ">・処理を中断しました。"
exit 0
fi

# LOGファイルの削除
if [ -f $LOGFILE ] ; then
\rm -f $LOGFILE
fi

# BADファイルの削除
if [ -f $BADFILE ] ; then
\rm -f $BADFILE
fi

# DISCARDファイルの削除
if [ -f $DISCARDFILE ] ; then
\rm -f $DISCARDFILE
fi

# LOGファイルの削除
if [ -f $LOGFILE ] ; then
\rm -f $LOGFILE
fi

# LOADER実行
sqlldr userid=$USERID control=$CTRLFILE log=$LOGFILE bad=$BADFILE data=$DATAFILE discard=$DISCARDFILE > /dev/null
STS=$?

# 終了開始ログ
echo ">・ステータス[$STS]で終了しました。"
case "$STS" in
0) echo ">・すべての列が正常にロードされました。" ;;
1) echo ">・致命的エラーが発生しました。" ;;
2) echo ">・すべての行または一部の行が拒否または廃棄されました。" ;;
3) echo ">・致命的エラーが発生しました。" ;;
*) echo ">・未定義のエラーコードが返却されました。" ;;
esac

if [ $STS != 0 ]; then
echo ">・以下のファイルを参照下さい。"
echo "> ログファイル:$LOGFILE"
echo "> 不良レコード:$BADFILE"
echo "> 廃棄レコード:$DISCARDFILE"
fi

echo
exit 0
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-06-30 17:44
mas_loader.shはUNIXやLinuxで使うシェルスクリプトですね。
そのままではWindowsでは使えません。
無理に使う必要はないので、「Oracle Database ユーティリティ」のマニュアルを読んでわかる方法で直接コマンドを使えばいいと思いますよ。
mas_loader.shを作った人は前任者ですか?まずは何をする目的のものか聞いてみましょう。
_________________
「ご教授」はできません
1

スキルアップ/キャリアアップ(JOB@IT)