MySQLでwhere句を使ってカラム指定でデータをコピーする方法
2024/02/22
MySQLで大量のデータを保存しているテーブルがあり、そのデータを絞った上で尚且つカラムを指定して他のテーブルにコピーしたかった。ダンプしてインサートしようかと思って少し試したところデータ量が多いからか時間がかかりすぎた。何か方法は無いか探したところ簡単にコピーできる方法があった。
SQL文
INSERT INTO
コピー先のテーブル名
(カラム, カラム)
SELECT
(カラム, カラム)
FROM
コピー元のテーブル名
WHERE
WHERE区を適当に
例えば以下条件の場合は、
- テーブルAからテーブルBにコピー
- カラムはidとnameを入れたい
- テーブルBには新カラムのコピー日時をregist_dateカラムとして入れたい
- WHERE句はテーブルAのdateカラムで2016-01-01から2016-01-31までを指定
以下のような形になる。
INSERT INTO
table_b
(id, name, regist_date)
SELECT
(id, name, NOW())
FROM
table_a
WHERE
date BETWEEN '2016-01-01' AND '2016-01-31'
WHERE句はさらにANDとかで絞込み検索が可能。
その他
絞込み検索をダンプしてインポートする方法だと100万件ほどのデータで1時間ほどかかったが、この方法だと5分もかからずに処理できた。
関連記事
-
-
MySQLでスレッドの実行状況を表示しスレッドの経過時間チェックや特定スレッドを強制終了する方法
データベースサーバが重たく、原因を調査する機会があった。サーバ自体のメモリやCP ...
-
-
MySQLで月別に集計を行う。あと日付時刻関数。
現在進行形でやっているデータ集計系だけど 新たな発見があったのでメモ。 ■日付時 ...
-
-
お名前.comのレンタルサーバ(SDサーバ)にMySQLデータのインポートする方法
お名前.comのレンタルサーバにそこそこ大きいサイズのMySQLデータを移行した ...
-
-
PLESK利用時にMySQLでrootのパスワードが分からない場合の対応方法
pleskで管理しているサーバがあり、mysqlのrootのパスワードが分からな ...
-
-
PHP / MySQLで2038年問題の対策
先日打ち合わせの際に「タイムスタンプを使ってユニークキーに云々~~」といったよう ...