2012-06-21 10 views
25

Połączyłem się z bazą danych Google Cloud SQL od Eclipse przy użyciu eksploratora źródeł danych. Ale kiedy generuję DDL tej bazy danych przy użyciu jej opcji Generate DDL, nie mogę pobrać AUTO_INCREMENT w moim skrypcie, ale otrzymuję odpowiedni klucz podstawowy.Generowanie instrukcji DDL bazy danych z Google Cloud Sql przy użyciu problemu z zaćmieniem powodu w skrypcie?

W jaki sposób mogę uzyskać AUTO_INCREMENT w moim skrypcie?

+0

Czy korzystasz z wtyczki Google for Eclipse? –

+0

@ Neil H, tak, używam wtyczki Google –

+1

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). –

Odpowiedz

0

Może to pomoże:

Google Cloud SQL Step 3

Innym przykładem wykorzystania DDL jest taka:

CREATE TABLE tabelle 
(
feld datentyp [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [COMMENT 'string'], 
CONSTRAINT name 
    PRIMARY KEY (feld1, feld2, ...) 
    FOREIGN KEY (feld1, feld2, ...) REFERENCES tabelle (feld1, feld2) 
) 

Źródło: http://www.tinohempel.de/info/info/datenbank/sql_tabelle.htm
To w języku niemieckim, ale przykłady są bardzo dobre!

Mam nadzieję, że dobrze zrozumiałem twoje pytanie, a to pomaga!

1

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:

  1. zainstalować skrypty wiersza poleceń (follow the instructions here)
  2. 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 $$.* 
    
  3. Zastąp "test: test" w skrypcie za pomocą swojego identyfikatora wystąpienia Google Cloud

  4. Wykonaj skrypt, aby utworzyć plik formatu "test: test" .ddl.sql, który będzie zawierał kod DDL dla wszystkich tabel we wszystkich bazy danych.