25

我使用数据源浏览器从 Eclipse 连接到 Google Cloud SQL 数据库。但是,当我使用它的选项生成该数据库的 DDL 时Generate DDL,我无法AUTO_INCREMENT在我的脚本中获取,而是获取相应的主键。

我将如何去获取AUTO_INCREMENT我的脚本?

4

2 回答 2

1

虽然这不是直接回答问题,但我相信它将为根本目标提供解决方案:提取 DDL。

假设:下面是一个shell脚本,所以需要合适的环境(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 实例标识符

  4. 执行脚本以生成格式为“test:test”.ddl.sql 的文件,该文件将包含所有数据库中所有表的 DDL。
于 2012-11-20T17:55:10.213 回答
0

也许这有帮助:

谷歌云 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 回答