25

Data Source Explorer を使用して、Eclipse から Google Cloud SQL データベースに接続しました。しかし、オプションを使用してそのデータベースの DDL を生成すると、スクリプトでGenerate DDLを取得できずAUTO_INCREMENT、対応する主キーを取得できません。

AUTO_INCREMENTスクリプトで を取得するにはどうすればよいですか?

4

2 に答える 2

1

これは質問に直接答えているわけではありませんが、根本的な目標である DDL の抽出に対する解決策を提供すると信じています。

前提:以下はシェルスクリプトなので、適切な環境(OS X、Linux、cygwin)が必要です

手順:

  1. コマンド ライン スクリプトをインストールします (こちらの手順に従ってください) 。
  2. 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. スクリプトの「test:test」を Google Cloud インスタンス ID に置き換えます

  4. スクリプトを実行して、すべてのデータベースのすべてのテーブルの DDL を含む "test:test".ddl.sql 形式のファイルを生成します。
于 2012-11-20T17:55:10.213 に答える
0

たぶんこれが役立ちます:

Google Cloud SQL ステップ 3

DDL を使用する別の例は次のとおりです。

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

ソース: http://www.tinohempel.de/info/info/datenbank/sql_tabelle.htm
ドイツ語ですが、例はとても良いです!

私があなたの質問を正しく理解したことを願っています。

于 2012-11-17T14:11:57.917 に答える