使用 Eclipse 从 Google Cloud Sql 生成数据库的 DDL 语句会导致脚本出现问题?

Posted

技术标签:

【中文标题】使用 Eclipse 从 Google Cloud Sql 生成数据库的 DDL 语句会导致脚本出现问题?【英文标题】:Generating DDL statements of database from Google Cloud Sql using eclipse cause issue in script? 【发布时间】:2012-06-23 16:13:24 【问题描述】:

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

如何在我的脚本中获取AUTO_INCREMENT

【问题讨论】:

您在使用 Google Plugin for Eclipse 吗? @Neil H,是的,我正在使用 Google 插件 我建议您重新阅读您的问题并尝试以不同的方式表达它,以便更清楚您的要求,否则人们会投票以“不是问题”来结束它。您只需要添加几句话,而不是试图用一句话(第二句话)解释所有内容。 肯定主键应该是自动增量,因为它应该是行的ID? (对于你所有的桌子)++你能举一个你在这里尝试做什么的例子吗? 【参考方案1】:

也许这会有所帮助:

Google Cloud SQL Step 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 它是德语的,但例子非常好!

希望我正确理解了您的问题,这会有所帮助!

【讨论】:

【参考方案2】:

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

假设:以下是shell脚本,所以需要合适的环境(OS X、Linux、cygwin)

步骤:

    安装命令行脚本 (follow the instructions here)

    在与 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 $$.*
    

    将脚本中的“test:test”替换为您的 Google Cloud 实例标识符

    执行脚本以生成格式为“test:test”.ddl.sql 的文件,该文件将包含所有数据库中所有表的 DDL。

【讨论】:

以上是关于使用 Eclipse 从 Google Cloud Sql 生成数据库的 DDL 语句会导致脚本出现问题?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine - 大查询 - Python 找不到库 google.cloud

Google Cloud Function - ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub”

如何从 Cloud Functions 连接 Google Cloud SQL?

ImportError:无法从“google.cloud”导入名称“tasks_v2”

如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?

从 Cloud Function (python) 写入 Google Cloud Storage