MSDE FunClub | 最終更新日 : 2000/10/23 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(下巻) | ||
【第18章357p 〜 359p掲載】 |
-- [SQL18_01.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- (1)作業用テーブルにレコードを吸い上げる -- (2)主キーが重複しないものはそのまま登録する -- (3)主キーが重複するものは、読み込んだレコードに更新する -- 以上の処理を行ないます -- -- ( 件処理されました)のメッセージの表示を抑止します SET NOCOUNT ON GO --**************************************** -- 【作業用テーブルの作成】 -- SQLスクリプト生成によって得られたもの --**************************************** USE tempdb --ローカル一時作業用テーブルの存在検査のため --OBJECTPROPERTYはカレントDBの検査 IF( (object_id('tempdb..#TMP_社員') IS NOT NULL ) AND OBJECTPROPERTY(object_id('tempdb..#TMP_社員'),'IsTable') = 1 ) BEGIN DROP TABLE #TMP_社員 END GO USE MySampleTest --接続先DB GO CREATE TABLE #TMP_社員 ( [社員コード] [int] NOT NULL PRIMARY KEY , [フリガナ] [varchar] (80) NULL , [氏名] [varchar] (40) NULL , [在籍支社] [varchar] (20) NULL , [部署名] [varchar] (30) NULL , [誕生日] [datetime] NULL , [入社日] [datetime] NULL , [自宅郵便番号] [varchar] (10) NULL , [自宅都道府県] [varchar] (40) NULL , [自宅住所1] [varchar] (60) NULL , [自宅住所2] [varchar] (60) NULL , [自宅電話番号] [varchar] (24) NULL , [内線] [varchar] (4) NULL , [写真] [image] NULL , [プロフィール] [text] NULL ) GO --**************************************** -- 【作業用テーブルに吸い上げる】 -- ファイルのパス文字列は、サーバー基準 --**************************************** BULK INSERT #TMP_社員 --挿入先テーブル名 FROM 'd:\test\社員.tbl' --サーバー基準のパス WITH ( DATAFILETYPE = 'native' --内部形式 ) GO --**************************************** -- 【新規レコードの挿入処理】 -- 主キーが一致しないレコードはそのまま挿入 --**************************************** INSERT INTO 社員COPY SELECT * FROM #TMP_社員 WHERE( #TMP_社員.社員コード IN ( SELECT #TMP_社員.社員コード FROM #TMP_社員 LEFT OUTER JOIN 社員COPY ON #TMP_社員.社員コード = 社員COPY.社員コード WHERE( 社員COPY.社員コード IS NULL ) ) ) GO --**************************************** -- 【レコードの更新処理】 -- 主キーが一致したレコードは読み込んだ値に更新 -- 主キー以外のすべての列の値を更新する --**************************************** UPDATE 社員COPY SET フリガナ = #TMP_社員.フリガナ , 氏名 = #TMP_社員.氏名 , 在籍支社 = #TMP_社員.在籍支社 , 部署名 = #TMP_社員.部署名 , 誕生日 = #TMP_社員.誕生日 , 入社日 = #TMP_社員.入社日 , 自宅郵便番号 = #TMP_社員.自宅郵便番号 , 自宅都道府県 = #TMP_社員.自宅都道府県 , 自宅住所1 = #TMP_社員.自宅住所1 , 自宅住所2 = #TMP_社員.自宅住所2 , 自宅電話番号 = #TMP_社員.自宅電話番号 , 内線 = #TMP_社員.内線 , 写真 = #TMP_社員.写真 , プロフィール = #TMP_社員.プロフィール FROM 社員COPY INNER JOIN #TMP_社員 ON 社員COPY.社員コード = #TMP_社員.社員コード GO --ローカル一時テーブルを削除する DROP TABLE #TMP_社員 GO