Heim  >  Artikel  >  Backend-Entwicklung  >  MySQL, wie man eine Tabelle dupliziert – schnelle Tipps

MySQL, wie man eine Tabelle dupliziert – schnelle Tipps

WBOY
WBOYOriginal
2024-08-21 21:03:151049Durchsuche

Kürzlich musste ich mich mit einigen Einschränkungen meines Datenbankanbieters auseinandersetzen, der das Umbenennen von Tabellen nicht unterstützt. Also musste ich eine Tabelle manuell duplizieren.

Die Datenbank meiner SaaS-Plattform wird auf Planetscale gehostet. Das Unternehmen stellt eine MySQL-kompatible serverlose Datenbank bereit. Dank seiner serverlosen Natur können Sie die Leistung von horizontalem Sharding, nicht blockierenden Schemaänderungen und vielen weiteren leistungsstarken Datenbankfunktionen nutzen, ohne den Aufwand für deren Implementierung auf sich nehmen zu müssen. Und eine tolle Entwicklererfahrung.

Aus einer anderen Perspektive müssen Sie sich mit einigen Einschränkungen hinsichtlich Schemaänderungen auseinandersetzen. Diese Einschränkungen sind erforderlich, um die Konsistenz in einer Sharding-Umgebung zu gewährleisten.

Seit ich Kunde wurde (vor fast zwei Jahren), haben sie große Fortschritte gemacht, wie zum Beispiel die Unterstützung für Foreign Key-Einschränkungen: https://planetscale.com/docs/concepts/foreign-key-constraints

Benennen Sie eine Tabelle um

Inspector ist eine Laravel-Anwendung. Mit den Laravel-Migrationen könnte ich die Umbenennungsfunktion verwenden, um einfach den Namen einer Tabelle zu ändern:

Schema::rename('from', 'to');

Planetscale unterstützt das Umbenennen von Tabellen nicht nativ. Also musste ich einen Workaround finden, um die Aufgabe zu bewältigen.

Um ehrlich zu sein, ist das Umbenennen einer Tabelle ein recht seltener Vorgang. Bei mir lag es an einer Namensüberschneidung zwischen den Entitäten „Projekte“ und „Anwendungen“. Ich musste Projekte umbenennen -> Anwendungen.

So duplizieren Sie eine Tabelle in MySQL

Es gibt zwei Möglichkeiten, eine Tabelle in MySQL zu duplizieren.

Duplizieren Sie die Tabellenstruktur

Sie können nur die Tabellenstruktur (Spalten, Schlüssel, Indizes usw.) ohne Daten duplizieren, indem Sie CREATE TABLE … LIKE:
verwenden

CREATE TABLE applications LIKE projects;

Das Ergebnis ist die Erstellung der Anwendungstabelle mit genau der gleichen Struktur wie die ursprüngliche Projekttabelle, jedoch OHNE Daten.

Um auch Daten zu importieren, können Sie eine zweite Anweisung als INSERT INTO … SELECT:
ausführen

INSERT INTO applications SELECT * FROM projects;

Achten Sie darauf, diese Anweisung auf großen Tabellen auszuführen, da sie viel Zeit und Serverressourcen in Anspruch nehmen kann.

Nur Spaltendefinition duplizieren

Die zweite Option besteht darin, nur Spaltendefinitionen zu duplizieren und Daten in einer Anweisung mit CREATE TABLE … AS SELECT:
zu importieren

CREATE TABLE applications AS SELECT * FROM projects;

Die neue Anwendungstabelle erbt nur die grundlegenden Spaltendefinitionen aus der Projekttabelle. Es werden keine Fremdschlüsseleinschränkungen, Indizes und Auto_Inkrement-Definitionen dupliziert.

Diese Option kann nützlich sein, wenn Sie die Namen von Indizes und Schlüsseln haben, die sich auf den Tabellennamen beziehen. Wenn Sie den Namen der Tabelle ändern, müssen Sie die Namen der Einschränkungen ersetzen. Importieren Sie sie lieber gar nicht erst und machen Sie alles noch einmal.

Ressourcen

Datenbanken sind in jeder Phase immer ein heißes Thema für Entwickler. Weitere technische Ressourcen finden Sie im Blog. Hier sind die beliebtesten Artikel zum Thema:

  • Gelöst – Verletzung der Integritätsbeschränkung
  • Sparen Sie 1 Million Abfragen mit Laravel Eager Loading
  • So skalieren Sie eine SQL-Datenbank
  • Behoben – Wartezeitüberschreitung bei MySQL-Sperre bei Verwendung von Laravel-Warteschlangen und -Jobs

Neu bei Inspector? Überwachen Sie Ihre Bewerbung kostenlos

Inspector ist ein Tool zur Codeausführungsüberwachung, das speziell für Softwareentwickler entwickelt wurde. Sie müssen nichts auf Serverebene installieren, installieren Sie einfach das Composer-Paket und schon kann es losgehen.

Im Gegensatz zu anderen komplexen All-in-One-Plattformen ist Inspector supereinfach und PHP-freundlich. Sie können unser Laravel- oder Symfony-Paket ausprobieren.

Wenn Sie auf der Suche nach effektiver Automatisierung, umfassenden Einblicken und der Möglichkeit sind, Warnungen und Benachrichtigungen an Ihre Messaging-Umgebung weiterzuleiten, testen Sie Inspector kostenlos. Registrieren Sie Ihr Konto.

Oder erfahren Sie mehr auf der Website: https://inspector.dev

MySQL How To Duplicate A Table – Fast Tips

Das obige ist der detaillierte Inhalt vonMySQL, wie man eine Tabelle dupliziert – schnelle Tipps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Eigenschafts-HooksNächster Artikel:PHP-Eigenschafts-Hooks