2012-12-05 10 views

Antwort

1

Devart ist richtig, dass Sie nicht mit der SHOW CREATE Anweisung verbinden können. Je nach Ihren genauen Bedürfnissen können Sie dies jedoch spoofieren, indem Sie Ihre eigene SHOW CREATE Erklärung erstellen.

Die Komplexität des Codes erhöht sich, wenn Sie die Datenbank-Engine, Spalten- und Tabellensortierungen, Indizes usw. hinzufügen müssen. Die folgende SQL-Tabelle enthält jedoch die richtige Tabelle und Felder mit Datentypen. Ich bin mir sicher, dass Sie es weiter ausdehnen können, indem Sie den Inhalt von information_schema.columns genauer untersuchen.

SELECT CONCAT('CREATE TABLE `',t.TABLE_NAME,'` ', 
    GROUP_CONCAT(CONCAT(c.COLUMN_NAME,' ',c.COLUMN_TYPE,' ',c.EXTRA) SEPARATOR ','),';') AS CreateStatement 
FROM information_schema.tables t 
INNER JOIN information_schema.columns c 
    ON t.TABLE_NAME=c.TABLE_NAME 
/* WHERE STATEMENT IF NEEDED */; 

Beispielausgabe:

CREATE TABLE `answers` rowid int(11) auto_increment, 
    id int(11) ,username varchar(200) ,answer varchar(2000) ; 
1

Es gibt keine Möglichkeiten, dies auf diese Weise zu tun. Der Befehl SHOW CREATE TABLE ruft einen Datensatz ab, aber das Ergebnis kann nicht mit einer anderen Tabelle verknüpft werden. Führen Sie SHOW CREATE TABLE als separaten Befehl für jede Tabelle aus, die Sie in der Anwendung benötigen.

0

Ich folgte diesen Link http://sql-info.de/mysql/examples/CREATE-TABLE-examples.html

SHOW CREATE TABLE soll auf Spalt als Ergebnis zurück: die Tabellennamen (Tabelle) und Text in der Tabelle Skript entspricht.

Dann sollte es in etwa so aussehen:

SELECT * 
FROM information_schema.`tables` ts 
INNER JOIN (SHOW CREATE TABLE) sct 
ON(ts.table_name=sct.table) 
WHERE table_schema LIKE 'tables\_%' 

Ich hoffe, das hilft. Ich kann es im Moment nicht ausprobieren.

Verwandte Themen