2012-03-14 18 views
2

SQL * Plusをbashで実行する際に問題があります。 は、ここで私は、私たちのイントラネットからのINSERT文をダウンロードし、SQL * Plusを経由してSQLファイルにそれを入れて実行し、私のコードbashでSQL * Plusを実行すると、エンコードが正しく行われない

#!/bin/bash 

curl http://192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql > script.sql 
sqlplus /nolog << ENDL 
connect user/password 
set sqlblanklines on 
start script.sql 
exit 
<<ENDL 

です。これはうまくいきます。問題は、script.sqlエンコーディングファイルがapplication/x-empty; charset=binary(ファイル-biによって決定)のようにしか見えないことです。だから私のDBに間違った文字を挿入してしまいました。これは本当に欲しくないものです。

:-)

ですから、あなたが任意のデータを失うことwithouどのように私は、ファイルのエンコーディングを変更できますか?そして、また、私のスクリプトにに関するあらゆるアドバイスを歓迎している私に教えてください可能性があり、私はLinuxのスクリプトで合計初心者です私はまた、 iconvでエンコードを変更しようとしましたが、それは役に立ちませんでした。私はなぜ知らないが、私は、ファイルを削除し、再度、数回のスクリプトを実行し、エンコーディング

UPDATE

は突然UTF-8ですが、文字がまだファイルとDBの両方壊れたので、それはdidnのしています何も解決しない

+0

を実行する前に、この行を入れていましたか? – bos

+0

申し訳ありません、ここに貼り付けるのを忘れました。更新 –

答えて

1

いいえ、問題はファイルにありませんでした(エンコーディングはUTF-8だったはずです)が、Oracle NLS_LANG環境変数の設定にあります。 だから、解決策は、それが全体のスクリプトなら、あなたはここで、文書(<< ENDL)の終了タグを持っていない理由は、SQL * Plusスクリプト

NLS_LANG="CZECH_CZECH REPUBLIC.UTF8" export NLS_LANG

0

curlコマンドで--data-asciiスイッチを使用してみてください。

+0

を参照してください。いいえ、それは私のために機能しませんでした、文字はまだ壊れています。しかし、助言のおかげで –

関連する問題