- PR -

対象が不特定で多数の場合の update について

1
投稿者投稿内容
ちゃむ
会議室デビュー日: 2005/01/14
投稿数: 11
投稿日時: 2005-06-01 16:27
初歩的な質問をさせてもらいます。

update 社員情報 set ステータス=1 where 社員番号 in(1001,1002,1003);

上の例で、任意の既存社員の"ステータス"を1にすることを考えていて、
対象となる社員番号はエクセルなど別のファイルに持っています。

この場合は、どのように処理するのがお勧めですか。

処理対象となる社員番号一覧がDB上にないので、
直接sqlのin句に記述するのか、
エクセル上の対象者一覧を一旦DBのテンポラリに入れて処理する、
などを考えています。(対象となるのは数千件程度です)
ただ件数が多いので、sql文にするのもやっかいかと。。

※DBは特定していません・・・

何か簡単な方法があるのかもしれませんが
宜しくお願いします!
角やん
会議室デビュー日: 2001/10/11
投稿数: 4
投稿日時: 2005-06-01 17:01
はじめまして

>対象となる社員番号はエクセルなど別のファイルに持っています。

>処理対象となる社員番号一覧がDB上にないので、・・・


ということでしたら、まず、処理対象となる社員番号一覧をDB上に登録して、

update 社員情報 ステータス=1 where 社員番号 in (select 社員番号 from 社員番号一覧)

とするのが一番素直な方法かと。
Oracleでしたら、@ITの記事が参考になると思います。

ExcelデータをOracleに格納する裏技
http://www.atmarkit.co.jp/fdb/single/03_excel2oracle/excel2oracle_01.html

上の他にExcel⇒Oracleの一方通行でよいのでしたら、Execlをcsv形式で保存して、
SQL*Loaderで表にInsertという方法もあります。

もしかして、ファイルをDBに上げる事に支障があるんでしょうか?
ちゃむ
会議室デビュー日: 2005/01/14
投稿数: 11
投稿日時: 2005-06-01 17:57
回答ありがとうございます。

>ということでしたら、まず、処理対象となる社員番号一覧をDB上に登録して、
>update 社員情報 ステータス=1 where 社員番号 in (select 社員番号 from 社員番号一覧)
>とするのが一番素直な方法かと。

やはりそうですか。。

>もしかして、ファイルをDBに上げる事に支障があるんでしょうか?

いえ、ODBCの環境を整えているので、エクセル、アクセスからのexportが可能です。

普段やらない操作だったので、手間をかけずにどうやるのが無難なのか
どなたかに相談したいと思っていたところです。

あまり深く考えず、DB上のテンポラリを作ってやってみます。
1

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