0

スクリプトの 1 つに問題があります。情報のリストがあり、各行には ; で区切られた 3 つの単語 (または一連の単語) が含まれています。
私がしなければならないことは、このファイルを読み取り、情報を Oracle データベースに保存することです。最初の列はユーザ​​ー ID、2 番目は名、3 番目は姓です。スペースを保持するために (複雑な名前など)、awk を使用したいと考えていました。しかし、うまくいきません...私が書いたのは:

cat List_employees_a.csv | awk -F ";" '{
sqlplus -s << EOF
${UR_ID}/${PASSWD}@AIM
insert into UAM.USER_DEFINITION values (UPPER('${1}'),LOWER('${2}'),UPPER('${3}'));
COMMIT;
exit;
EOF}'

入れてみました; 指示を適切に区切るために各行の最後に追加しましたが、何も変更されませんでした...

4

1 に答える 1

3

bash readの代わりに使用awkして、後でソースとして使用できる sql ファイルを作成することをお勧めしますsqlplus

たとえば、次は sql ファイルを作成します。

while IFS=';' read -r id fname lname; do 
    echo "insert into UAM.USER_DEFINITION values (UPPER('${id}'),LOWER('${fname}'),UPPER('${lname}'));"
done < List_employees_a.csv > sql.file

次のファイルの場合:

$ cat c.csv 
ida;abc acff;foeee
idc;fiffh fhfhf fhhhg;aaa

上記のコマンドを実行すると、次のような sql ファイルが作成されます。

$ cat sql.file 
insert into UAM.USER_DEFINITION values (UPPER('ida'),LOWER('abc acff'),UPPER('foeee'));
insert into UAM.USER_DEFINITION values (UPPER('idc'),LOWER('fiffh fhfhf fhhhg'),UPPER('aaa'));

sqlfile が作成されたら、sqlplus にログインして以下を実行します。

SQL > @/path/to/script/file/sql.file

これにより、行を読み取るたびにSQL接続を開くことができなくなります。

于 2013-07-08T14:17:00.210 に答える