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でデータベース単位とテーブル単位のデータサイズ(容量)の調べ方
VPSの各種ファイルを整理している際に「MySQLも不要なデータを削除すればいい ...
-
-
MySQLで大文字小文字
半角英数字のみのフォームで入力した値を検索した際、 データに差異が発生。 [Aa ...
-
-
MySQLでdatetime型のカラムをdate型やtime型に変換して検索する方法
MySQLでdatetime型のカラムがあり、そちらをdate型やtime型に変 ...
-
-
MySQLでIPアドレスを数値として入れると変な値になる場合の対処方法
MySQLでIPアドレスをINET_ATON関数を用いてINT型に変換し格納する ...
-
-
MySQLが起動も再起動もできない際の対応方法
サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...