Wie kopiere oder klone oder dupliziere ich die Daten, Strukturen und Indizes einer MySQL-Tabelle in eine neue?
Das habe ich bisher gefunden.
Dadurch werden die Daten und die Struktur kopiert, nicht jedoch die Indizes:
create table {new_table} select * from {old_table};
Dadurch werden die Struktur und die Indizes kopiert, nicht jedoch die Daten:
create table {new_table} like {old_table};
Antworten:
Führen Sie diese beiden Abfragen aus, um mit Indizes und Triggern zu kopieren:
Um nur Struktur und Daten zu kopieren, verwenden Sie diese:
Ich habe das schon einmal gefragt:
Kopieren Sie eine MySQL-Tabelle mit Indizes
quelle
select *
in großen Tabellen funktioniert .AUTO_INCREMENT
Wert nicht kopiert .Abgesehen von der obigen Lösung können Sie
AS
es in einer Zeile erstellen.quelle
create table {new_table} select * from {old_table};
keine Antwort und liefert keine neuen Informationen.MySQL-Weg:
quelle
Gehen Sie zu phpMyAdmin und wählen Sie Ihre ursprüngliche Tabelle aus. Wählen Sie dann die Registerkarte " Operationen " im Bereich " Tabelle in (database.table) kopieren ". Wählen Sie die Datenbank aus, in die Sie kopieren möchten, und fügen Sie einen Namen für Ihre neue Tabelle hinzu.
quelle
Ich fand die gleiche Situation und ging wie folgt vor:
SHOW CREATE TABLE <table name to clone>
: Hiermit erhalten Sie dieCreate Table
Syntax für die Tabelle, die Sie klonen möchtenCREATE TABLE
Abfrage aus, indem Sie den Tabellennamen ändern, um die Tabelle zu klonen.Dadurch wird eine exakte Replik der Tabelle erstellt, die Sie zusammen mit den Indizes klonen möchten. Sie müssen dann nur noch die Indizes umbenennen (falls erforderlich).
quelle
Der bessere Weg, eine Tabelle zu duplizieren, besteht darin, nur eine
DDL
Anweisung zu verwenden. Auf diese Weise können Sie unabhängig von der Anzahl der Datensätze in der Tabelle die Duplizierung sofort durchführen.Mein Zweck ist:
Dies vermeidet die
INSERT AS SELECT
Aussage, dass die Ausführung bei Tabellen mit vielen Datensätzen einige Zeit in Anspruch nehmen kann.Ich schlage auch vor, eine PLSQL-Prozedur als folgendes Beispiel zu erstellen:
Einen schönen Tag noch! Alex
quelle
Wenn man diese Antwort erweitert , könnte man eine gespeicherte Prozedur verwenden:
Dies führt zu einer doppelten Tabelle mit dem Namen
tableName_20181022235959
If when whenErgebnisse:
Implementierung
quelle
Nachdem ich die obige Lösung ausprobiert habe, habe ich meinen eigenen Weg gefunden.
Meine Lösung ist ein wenig manuell und benötigt DBMS.
Exportieren Sie zunächst die Daten.
Zweitens öffnen Sie die Exportdaten.
Drittens ersetzen Sie den alten Tabellennamen durch den neuen Tabellennamen.
Viertens ändern Sie den gesamten Triggernamen in den Daten (ich verwende MySQL und es wird ein Fehler angezeigt, wenn ich den Triggernamen nicht ändere).
Fünftens importieren Sie Ihre bearbeiteten SQL-Daten in die Datenbank.
quelle
Versuche dies :
Ich habe 4 Spalten aus der alten Tabelle ausgewählt und eine neue Tabelle erstellt.
quelle
FÜR MySQL
FÜR MSSQL Verwendung
MyDatabase
:Diese SQL wird zum Kopieren von Tabellen verwendet. Hier wird der Inhalt von oldCustomersTable kopiert
newCustomersTable
.Stellen Sie sicher, dass das
newCustomersTable
nicht in der Datenbank vorhanden ist.quelle