Chociaż nie odpowiada to bezpośrednio na pytanie, uważam, że dostarczy rozwiązanie głównego celu: Wyodrębnienie DDL.
Założenie: Poniżej znajduje się skrypt, więc odpowiednie środowisko (OS X, Linux, Cygwin) jest wymagane
kroki:
- zainstalować skrypty wiersza poleceń (follow the instructions here)
Utwórz następujący niestandardowy skrypt w tym samym katalogu, co plik google_sql.sh:
GOOGLE_CLOUD_SQL_INSTANCE=test:test
echo "SELECT CONCAT('SELECT CONCAT(\"SHOW CREATE TABLE ',schema_name,'.\",table_name,\";\") \"select \\\\\"use ',schema_name,';\\\\\";\" FROM information_schema.tables WHERE table_schema = \"',schema_name,'\";') 'use information_schema;' FROM SCHEMATA WHERE schema_name NOT IN ('information_schema','mysql','performance_schema');" >> $$.1.get_schema.sql
./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.1.get_schema.sql > $$.2.show_create.sql
./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.2.show_create.sql > $$.3.sql.out
./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.3.sql.out > $$.4.create.raw
awk -F" " '/Table Create Table/{print "";}
/CREATE/{sub(/^..*CREATE TABLE/,"CREATE TABLE");print $0}
$1 == "" {print $0}
/^\)/{print $0";"}
/^use/{print $0}' $$.4.create.raw > $GOOGLE_CLOUD_SQL_INSTANCE.ddl.sql
rm $$.*
Zastąp "test: test" w skrypcie za pomocą swojego identyfikatora wystąpienia Google Cloud
- Wykonaj skrypt, aby utworzyć plik formatu "test: test" .ddl.sql, który będzie zawierał kod DDL dla wszystkich tabel we wszystkich bazy danych.
Czy korzystasz z wtyczki Google for Eclipse? –
@ Neil H, tak, używam wtyczki Google –
Sugeruję, abyś ponownie przeczytał swoje pytanie i spróbował sformułować to inaczej, aby było wyraźniej, o co prosisz, w przeciwnym razie ludzie będą głosować, aby zamknąć to jako Nie Pytanie. Trzeba tylko dodać kilka zdań, zamiast próbować wyjaśnić wszystko w jednym zdaniu (drugim). –