MySQLでツラツラ学んだことを書いていきます(^-^)
MySQLで一時テーブルを作成
一時テーブルをCREATE TEMPORARY TABLE
で作成します。
TEMPORARY テーブルは現在のセッション内でのみ表示され、セッションがクローズされると自動的に削除されます。2 つの異なるセッションが同じ一時テーブル名を使用することができ、互いに同じ名前の既存の TEMPORARY 以外のテーブルと競合することはありません。
ストレージエンジンはInnoDB
が選択されます。
CREATE TEMPORARY TABLE contract_temp (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
contract_at TIMESTAMP,
PRIMARY KEY (id)
)ENGINE=InnoDB
;
show create table contract_temp;
で作成した一時テーブルの中身を確認できます。
一時テーブルに作成したCSV or TSVファイルを投入する
FIELDS TERMINATED BY
の '\t'
は区切り文字を設定するので、今回はタブ区切りのTSVファイルを読み込みます。
LOAD DATA LOCAL INFILE '/Users/○○○○/○○○○/contract_test.tsv'
INTO TABLE `contract_temp`
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES
(`id`, `contract_at`, `digital_log`);
1つのテーブルを別のテーブルの値でUPDATEするやり方
先程の一時テーブルで作成した値(今回は前もって準備していたTSVファイルを投入しておきます)を既存のテーブルに更新します。今回はuser_profile
テーブルの3つのカラムをcontract_temp
一時テーブルのカラムで更新します。
UPDATE user_profile,contract_temp
SET user_profile.contract_at = contract_temp.contract_at,
user_profile.digital_log = contract_temp.digital_log
WHERE user_profile.id = contract_temp.id;