2012-12-05 11 views

Odpowiedz

1

Devart ma rację, nie można dołączyć do oświadczenia SHOW CREATE. Jednak w zależności od Twoich konkretnych potrzeb możesz sfałszować to, tworząc własne oświadczenie SHOW CREATE.

Złożoność kodu zwiększy się, jeśli konieczne będzie uwzględnienie mechanizmu bazy danych, kolumn i tabel, indeksów itd. - jednak poniższy kod SQL zapewni odpowiednią tabelę i pola wraz z typami danych. Jestem pewien, że możesz go jeszcze bardziej rozszerzyć, bardziej szczegółowo analizując zawartość information_schema.columns.

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

Przykładowe wyjście:

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

Nie ma sposobu, aby to zrobić w ten sposób. Komenda SHOW CREATE TABLE pobiera zestaw danych, ale wyniku nie można połączyć z inną tabelą. Wykonaj SHOW CREATE TABLE jako osobne polecenie dla każdej tabeli, której potrzebujesz w aplikacji.

0

Śledziłem ten link http://sql-info.de/mysql/examples/CREATE-TABLE-examples.html

SHOW CREATE TABLE ma powrócić do kolumn w wyniku: nazwę tabeli (stołowego) i tekst odpowiadający na stworzenie skryptu stołowego.

Następnie powinno to wyglądać mniej więcej tak:

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

Mam nadzieję, że to pomaga. W tej chwili nie jestem w stanie tego spróbować.