インフラエンジニアbacchiのわかったことまとめ

bacchi.me

既存のテーブルをコピーする際の便利ワザ

既存のテーブルのコピーを作る際に便利だったワザを紹介します。

CREATE TABLE AS SELECT 文で空のテーブルを作成

既存のテーブルをコピーして新しいテーブルを作る場合、
Create Table As Select文でテーブル作成を行うと列定義などのめんどくさいことをしなくてもよくていい感じ。

クエリ例

CREATE TABLE table_a AS SELECT * FROM table_b

しかし、このようなクエリを流すと、データもコピーされてしまいます。

データが不要であれば、DELETEなり、TRUNCATEを流せばいいですが、めんどくさい・・

何かいい方法はないかと思っていましたが、いい方法があったのです!

列定義だけをコピーし、データはコピーしないCREATE TABLE AS SELECT文

ここではカラムの定義だけをコピーし、
レコードはコピーしないCREATE TABLE AS SELECT文の書き方をご紹介します

クエリ例

CREATE TABLE table_a AS SELECT * FROM table_b WHERE  1=2;

WHERE句に「1=2」などの必ず「FALSE」になるダミーの式を入れることによって、
レコードを1行も作成しないCreate Table As Select 文となります

テーブルを作成した後にデータをDELETE,TRUNCATEする必要がないのがGoodですねd(ツ)b

  • B!