Wie kann ich ein Skript zum Erstellen einer Tabelle für eine vorhandene Tabelle in phpmyadmin generieren?
Wie kann ich ein Skript zum Erstellen einer Tabelle für eine vorhandene Tabelle in phpmyadmin generieren?
Antworten:
Verwenden Sie die folgende Abfrage in der Registerkarte "SQL":
SHOW CREATE TABLE tablename
Vollständige Abfrage anzeigen Es gibt diesen Hyperlink mit dem Namen + Optionen oben links. Dort wählen Sie Vollständige Texte
Run - SHOW CREATE TABLE <table name>
Abfrage.
;
am Ende erforderlich.
Schritt 1, erstellen Sie eine Tabelle, fügen Sie einige Zeilen ein:
create table penguins (id int primary key, myval varchar(50))
insert into penguins values(2, 'werrhhrrhrh')
insert into penguins values(25, 'weeehehehehe')
select * from penguins
Schritt 2: Verwenden Sie den Befehl mysql dump:
mysqldump --no-data --skip-comments --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
Schritt 3, beobachten Sie die Ausgabe in penguins.sql:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `penguins`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `penguins` (
`id` int(11) NOT NULL,
`myval` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Die Ausgabe wird durch eine Reihe von Token für Ausführungsbedingungen oben und unten überladen. Sie können sie herausfiltern, wenn Sie sie im nächsten Schritt nicht möchten.
In Schritt 4 (optional) können Sie diese zusätzlichen Token für Ausführungsbedingungen folgendermaßen herausfiltern:
mysqldump --no-data --skip-comments --compact --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
Was die endgültige Ausgabe erzeugt:
eric@dev /home/el $ cat penguins.sql
DROP TABLE IF EXISTS `penguins`;
CREATE TABLE `penguins` (
`id` int(11) NOT NULL,
`myval` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Abfrage ausführen ist SQL-Registerkarte
SHOW CREATE TABLE tableName
Klicke auf
+ Optionen -> Volltexte auswählen -> Klicken Sie auf Los
Kopieren Sie die Abfrage "Tabelle erstellen" und fügen Sie sie dort ein, wo Sie eine neue Tabelle erstellen möchten.
select * from information_schema.columns
where table_name = 'your_table' and table_schema = 'your_database'
Dies kann eine späte Antwort sein. Aber es kann anderen helfen. In MY SQL Workbench (ich verwende Workbench Version 6.3 und My SQL Version 5.1 Community Edition) ist dies sehr einfach: Klicken Sie mit der rechten Maustaste auf die Tabelle, für die Sie das Erstellungsskript erstellen möchten, und wählen Sie die Option "In Zwischenablage kopieren -> Anweisung erstellen". Fügen Sie einfach einen beliebigen Texteditor ein, um das Erstellungsskript zu erhalten.
Verwenden der PHP-Funktion.
Natürlich müssen Sie die Abfragefunktion ($ this-> model) auf Ihre eigene ändern.
/**
* Creating a copy table based on the current one
*
* @param type $table_to_copy
* @param type $new_table_name
* @return type
* @throws Exception
*/
public function create($table_to_copy, $new_table_name)
{
$sql = "SHOW CREATE TABLE ".$table_to_copy;
$res = $this->model->queryRow($sql, PDO::FETCH_ASSOC);
if(!filled($res['Create Table']))
throw new Exception('Could not get the create code for '.$table_to_copy);
$newCreateSql = preg_replace(array(
'@CREATE TABLE `'.$table_to_copy.'`@',
'@KEY `'.$table_to_copy.'(.*?)`@',
'@CONSTRAINT `'.$table_to_copy.'(.*?)`@',
'@AUTO_INCREMENT=(.*?) @',
), array(
'CREATE TABLE `'.$new_table_name.'`',
'KEY `'.$new_table_name.'$1`',
'CONSTRAINT `'.$new_table_name.'$1`',
'AUTO_INCREMENT=1 ',
), $res['Create Table']);
return $this->model->exec($newCreateSql);
}
Ich habe einen anderen Weg gefunden, um eine Tabelle in eine SQL-Datei zu exportieren.
Angenommen, mein Tisch ist abs_item_variations
abs_item_variations ->structure -> propose table structure -> export -> Go
Exportieren Sie das gesamte Datenbankauswahlformat als SQL. Öffnen Sie nun die heruntergeladene SQL-Datei mit Notepad, Notepad ++ oder einem beliebigen Editor. Sie sehen alle Tabellen und fügen Abfragen Ihrer Datenbank ein. Alle Skripte werden dort verfügbar sein.