2012-12-05 16 views

risposta

1

Devart è corretto che non è possibile partecipare alla dichiarazione SHOW CREATE. Tuttavia, a seconda delle esigenze specifiche, è possibile eseguire lo spoofing creando la propria istruzione SHOW CREATE.

La complessità del codice aumenterà se è necessario includere il motore di database, le regole di confronto di colonne e tabelle, gli indici e così via. Tuttavia, l'SQL seguente fornirà la tabella ei campi corretti, completi di tipi di dati. Sono sicuro che puoi estenderlo ulteriormente esaminando il contenuto di information_schema.columns in modo più approfondito.

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 */; 

Esempio di output:

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

Non c'è modo di farlo in questo modo. Il comando SHOW CREATE TABLE recupera un set di dati, ma il risultato non può essere unito a un'altra tabella. Eseguire SHOW CREATE TABLE come comando separato per ogni tabella necessaria nell'applicazione.

0

ho seguito questo link si suppone http://sql-info.de/mysql/examples/CREATE-TABLE-examples.html

SHOW CREATE TABLE per tornare a colonne come risultato: il nome della tabella (tabella ) e il testo corrispondente lo script create table.

Poi, dovrebbe essere simile a questa:

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

Spero che questo aiuta. Al momento non sono in grado di provarlo.

Problemi correlati