MySQL テーブルを複製する方法 – 簡単なヒント

WBOY
リリース: 2024-08-21 21:03:15
オリジナル
930 人が閲覧しました

最近、テーブルの名前変更をサポートしていないデータベース プロバイダーのいくつかの制限に対処する必要がありました。そのため、テーブルを手動で複製する必要がありました。

私の SaaS プラットフォームのデータベースは Planetscale でホストされています。同社は、MySQL 互換のサーバーレス データベースを提供しています。サーバーレスの性質のおかげで、水平シャーディング、ノンブロッキングなスキーマ変更、その他多くの強力なデータベース機能を、苦労せずに利用できます。そして素晴らしい開発者エクスペリエンス。

別の観点から見ると、スキーマ変更に関する何らかの制約に対処する必要があります。これらの制限は、シャード環境での一貫性を保証するために必要です。

私が顧客になってから (ほぼ 2 年前)、外部キー制約のサポートなど、多くの進歩が見られました: https://planetscale.com/docs/concepts/foreign-key-constraints

テーブルの名前を変更する

Inspector は Laravel アプリケーションです。 Laravel の移行を使用すると、rename 関数を使用してテーブルの名前を簡単に変更できます。

Schema::rename('from', 'to');
ログイン後にコピー

Planetscale はテーブル名の変更をネイティブにサポートしていません。そのため、このタスクを達成するための回避策を見つける必要がありました。

正直に言うと、テーブルの名前を変更する操作は非常にまれです。私の場合、それは「プロジェクト」エンティティと「アプリケーション」エンティティの間で名前が重複していることが原因でした。プロジェクトの名前を変更する必要がありました ->アプリケーション。

MySQL でテーブルを複製する方法

MySQL でテーブルを複製するには 2 つの方法があります。

テーブル構造を複製する

CREATE TABLE … LIKE:
を使用すると、データなしでテーブル構造 (列、キー、インデックスなど) のみを複製できます。

CREATE TABLE applications LIKE projects;
ログイン後にコピー

結果として、元のプロジェクト テーブルとまったく同じ構造を持つアプリケーション テーブルが作成されますが、データはありません。

データをインポートするには、INSERT INTO … SELECT:
として 2 番目のステートメントを実行します。

INSERT INTO applications SELECT * FROM projects;
ログイン後にコピー

このステートメントを大きなテーブルで実行すると、多くの時間とサーバー リソースが必要になる可能性があるため、注意してください。

重複のみの列定義

2 番目のオプションは、列定義のみを複製し、CREATE TABLE … AS SELECT:
を使用して 1 つのステートメントでデータをインポートすることです。

CREATE TABLE applications AS SELECT * FROM projects;
ログイン後にコピー

新しいアプリケーション テーブルは、プロジェクト テーブルから基本的な列定義のみを継承します。外部キー制約、インデックス、auto_increment 定義は複製されません。

このオプションは、テーブル名に関連するインデックスとキーの名前がある場合に便利です。テーブルの名前を変更するには、制約の名前を置き換える必要があります。まったくインポートせず、最初からやり直すほうがよいでしょう。

リソース

データベースは、どの段階においても開発者にとって常にホットなトピックです。他の技術リソースはブログで見つけることができます。このトピックに関する最も人気のある記事は次のとおりです:

  • 解決済み - 整合性制約違反
  • Laravel 熱心な読み込みで 100 万クエリを節約
  • SQL データベースをスケーリングする方法
  • 解決済み – Laravel キューとジョブを使用すると MySQL ロック待機タイムアウトを超過しました

検査官は初めてですか?アプリケーションを無料で監視する

Inspector は、ソフトウェア開発者向けに特別に設計されたコード実行監視ツールです。サーバー レベルで何もインストールする必要はありません。composer パッケージ をインストールするだけで準備完了です。

他の複雑なオールインワン プラットフォームとは異なり、Inspector は非常に簡単で、PHP に優しいです。 Laravel または Symfony パッケージを試すことができます。

効果的な自動化、深い洞察、アラートや通知をメッセージング環境に転送する機能をお探しの場合は、Inspector を無料でお試しください。アカウントを登録してください。

または、Web サイトで詳細をご覧ください: https://inspector.dev

MySQL How To Duplicate A Table – Fast Tips

以上がMySQL テーブルを複製する方法 – 簡単なヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!