Mit MySQL kann ich die Abfrage ausführen:
SHOW CREATE TABLE MyTable;
Und es wird die Anweisung create table für die angegebene Tabelle zurückgegeben. Dies ist nützlich, wenn Sie bereits eine Tabelle erstellt haben und dieselbe Tabelle in einer anderen Datenbank erstellen möchten.
Ist es möglich, die Einfügeanweisung für eine bereits vorhandene Zeile oder eine Reihe von Zeilen abzurufen? Einige Tabellen haben viele Spalten, und es wäre schön, wenn ich eine insert-Anweisung erhalten könnte, um Zeilen in eine andere Datenbank zu übertragen, ohne die insert-Anweisung ausschreiben zu müssen oder ohne die Daten in CSV zu exportieren und dann dieselben Daten zu importieren in die andere Datenbank.
Um zu verdeutlichen, was ich möchte, ist etwas, das wie folgt funktionieren würde:
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
Und habe folgendes für mich zurückgegeben:
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
mysql>
Eingabeaufforderung zeigte. Bisher keine.Antworten:
Es scheint keine Möglichkeit zu geben, die
INSERT
Anweisungen von der MySQL-Konsole abzurufen, aber Sie können sie mit mysqldump abrufen, wie Rob vorgeschlagen hat. Geben Sie-t
an, dass die Tabellenerstellung weggelassen werden soll.quelle
--hex-blob
wenn Sie blob - Spalten (zBbit(1)
), wäre es als String schreibt sonst, was zur Folge haben könnteUnknown command '\0'
Fehler bei der Ausführung von INSERT.In MySQL Workbench können Sie die Ergebnisse jeder einzelnen Tabellenabfrage als Liste von
INSERT
Anweisungen exportieren . Führen Sie einfach die Abfrage aus und dann:Export/Import
den ErgebnissenFormat
AuswahlSQL INSERT statements
Save
Export
quelle
Da Sie die Tabelle mit dem von SHOW CREATE TABLE MyTable erstellten SQL kopiert haben , können Sie die Daten wie folgt in die neue Tabelle laden.
Wenn Sie die INSERT-Anweisungen wirklich möchten, ist die einzige mir bekannte Möglichkeit, mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm zu verwenden . Sie können ihm Optionen geben, um nur Daten für eine bestimmte Tabelle zu sichern und sogar Zeilen zu begrenzen.
quelle
Ich habe eine PHP-Funktion geschrieben, die dies tun wird. Ich musste eine Einfügeanweisung abgeben, falls ein Datensatz nach dem Löschen für eine Verlaufstabelle ersetzt werden muss:
quelle
O' Malley
, weisen die generierten Abfragen Syntaxfehler auf, da nicht einfache Anführungszeichen übereinstimmen. Sie sollten zumindest verwenden,mysql_real_escape_string
wenn Sie diese Route gehen.Der Code von Laptop Lift funktioniert gut, aber es gab ein paar Dinge, von denen ich dachte, dass sie den Leuten gefallen könnten.
Der Datenbankhandler ist ein Argument, das nicht fest codiert ist. Benutzte die neue MySQL-API. $ ID wurde durch ein optionales $ where-Argument für Flexibilität ersetzt. Verwendet real_escape_string für den Fall, dass jemand jemals versucht hat, eine SQL-Injektion durchzuführen und einfache Brüche mit Anführungszeichen zu vermeiden. Benutzte die
INSERT table (field...) VALUES (value...)...
Syntax so, dass die Felder nur einmal definiert werden und dann nur die Werte jeder Zeile auflisten (implodieren ist fantastisch). Weil Nigel Johnson darauf hingewiesen hat, fügte ich hinzuNULL
Handhabung .Ich habe es benutzt,
$array[$key]
weil ich befürchtet hatte, es könnte sich irgendwie ändern, aber wenn etwas nicht schrecklich falsch ist, sollte es sowieso nicht.quelle
INTO
auf ,INSERT INTO {$tables}
aber es gibt keinen Umgang mit NULL - Werte in der Tabelle.INTO
ist völlig optional . Ich habe die Behandlung von Nullen hinzugefügt.Ich verwende das Programm SQLYOG, mit dem ich eine Auswahlabfrage durchführen, auf die Ergebnisse zeigen und den Export als SQL auswählen kann. Dies gibt mir die Einfügeanweisungen.
quelle
Führen Sie in der MySQL-Werkbank Folgendes aus:
Klicken Sie auf Server> Datenexport
Wählen Sie auf der Registerkarte Objektauswahl das gewünschte Schema aus.
Wählen Sie als Nächstes die gewünschten Tabellen im Listenfeld rechts neben dem Schema aus.
Wählen Sie einen Dateispeicherort aus, um das Skript zu exportieren.
Klicken Sie auf Fertig stellen.
Navigieren Sie zu der neu erstellten Datei und kopieren Sie die Einfügeanweisungen.
quelle
Wenn Sie eine "Anweisung einfügen" für Ihre Tabelle erhalten möchten, können Sie den folgenden Code ausprobieren.
Als Ergebnis erhalten Sie eine Inser-Erklärung:
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_11, value_12, ..., value_1n);INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_21, value_22, ..., value_2n);/ ................................................. .... /
INSERT INTO
your_table
(field_1
,field_2
,...
,field_n
) VALUES (value_m1, value_m2, ..., value_mn);, wobei m - Anzahl der Datensätze in Ihrer_Tabelle
quelle
Sie können Sequel Pro verwenden, um dies zu tun. Es gibt eine Option, um als Einfügeanweisung für die erhaltenen Ergebnisse zu erhalten
quelle
In PHPMyAdmin können Sie:
Sie können dies auf viele Zeilen gleichzeitig anwenden, wenn Sie sie auswählen und unten in der Tabelle auf Kopieren und dann auf SQl-Vorschau klicken
quelle
Mit PDO können Sie dies auf diese Weise tun.
quelle
Sie können einen SP mit dem folgenden Code erstellen - er unterstützt auch NULL.
quelle
Für HeidiSQL-Benutzer :
Wenn Sie HeidiSQL verwenden, können Sie die Zeilen auswählen, für die Sie eine Einfügeanweisung erhalten möchten. Klicken Sie dann mit der rechten Maustaste> Rasterzeilen exportieren> wählen Sie "In Zwischenablage kopieren" für "Ausgabeziel", "Auswahl" für "Zeilenauswahl", damit Sie keine anderen Zeilen exportieren, "SQL INSERTs" für "Ausgabeformat"> Klicken Sie auf "OK".
Die Anweisung insert befindet sich in Ihrer Zwischenablage.
quelle
Ich denke, dass die Antwort von Laptop Lifts am besten ist ... aber da niemand den Ansatz vorgeschlagen hat, den ich verwende, dachte ich mir, ich sollte mich einschalten. Ich verwende phpMyAdmin, um meine Datenbanken die meiste Zeit einzurichten und zu verwalten. Darin können Sie einfach Häkchen neben die gewünschten Zeilen setzen und unten auf "Exportieren" klicken und SQL auswählen. Sie erhalten INSERT-Anweisungen für die von Ihnen ausgewählten Datensätze. Hoffe das hilft.
quelle
Basierend auf Ihren Kommentaren besteht Ihr Ziel darin, Datenbankänderungen von einer Entwicklungsumgebung in eine Produktionsumgebung zu migrieren.
Der beste Weg, dies zu tun, besteht darin, Ihre Datenbankänderungen in Ihrem Quellcode beizubehalten und sie folglich in Ihrem Quellcodeverwaltungssystem wie git oder svn zu verfolgen.
Mit so etwas können Sie schnell einsatzbereit sein: https://github.com/davejkiger/mysql-php-migrations
Als sehr einfache benutzerdefinierte Lösung in PHP können Sie eine Funktion wie die folgende verwenden:
Anschließend können Sie ein Migrationsskript erstellen, mit dem jede Umgebung auf Ihre Spezifikationen aktualisiert wird.
quelle