Mysql 使用eclipse从Google Cloud Sql生成数据库的DDL语句会导致脚本中出现问题吗?
我使用数据源浏览器从eclipse连接到Google Cloud SQL数据库。但是,当我使用其选项Mysql 使用eclipse从Google Cloud Sql生成数据库的DDL语句会导致脚本中出现问题吗?,mysql,eclipse,google-cloud-sql,Mysql,Eclipse,Google Cloud Sql,我使用数据源浏览器从eclipse连接到Google Cloud SQL数据库。但是,当我使用其选项generate DDL生成该数据库的DDL时,我无法在脚本中获取AUTO_INCREMENT,而是获取相应的主键 如何在脚本中获取自动增量?也许这有助于: 使用DDL的另一个示例如下: CREATE TABLE tabelle ( feld datentyp [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [COMMENT
generate DDL
生成该数据库的DDL时,我无法在脚本中获取AUTO_INCREMENT
,而是获取相应的主键
如何在脚本中获取自动增量?也许这有助于:
使用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)
)
来源:
它是德语的,但是例子非常好
希望我正确理解了你的问题,这对我有帮助 虽然这并不能直接回答这个问题,但我相信它将为根本目标提供一个解决方案:提取DDL
假设:以下是一个shell脚本,因此需要一个合适的环境(OSX、Linux、cygwin)
步骤:
安装命令行脚本()
在与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 $$.*
GOOGLE\u CLOUD\u SQL\u INSTANCE=test:test
echo“SELECT CONCAT('SELECT CONCAT(\'SHOW CREATE TABLE',schema\u name',.\”,TABLE\u name,\“;”)“SELECT”\\\\\\\\'use',schema\u name',;“SELECT CONCAT(\'SHOW CREATE TABLE',schema\u name',.\”,“schema\u name',“;”)“use information\u schema\u schema,其中schema\u name不在('information\u schema','mysql'schema','performance\u schema'中使用信息\u schema;”>>$$.1.get\u schema.sql
./google\u sql.sh$google\u CLOUD\u sql\u实例信息\u schema<$.1.get\u schema.sql>$$.2.show\u create.sql
./google\u sql.sh$google\u CLOUD\u sql\u实例信息\u模式<$$.2.show\u create.sql>$$$.3.sql.out
./google\u sql.sh$google\u CLOUD\u sql\u实例信息\u模式<$$.3.sql.out>$$$.4.create.raw
awk-F”“/Table创建表/{print”“;}
/创建/{sub(/^..*CREATE TABLE/,“CREATE TABLE”);打印$0}
$1==“打印$0}”
/^\)/{打印$0”;“}
/^使用/{print$0}'$$.4.create.raw>$GOOGLE\u CLOUD\u SQL\u INSTANCE.ddl.SQL
rm$$*
将脚本中的“test:test”替换为您的Google云实例标识符
执行脚本以生成格式为“test:test”.ddl.sql的文件,该文件将具有所有数据库中所有表的ddl
你是在使用Eclipse的谷歌插件吗?@Neil H,是的,我在使用谷歌插件。我建议你重新阅读你的问题,并尝试用不同的措辞,这样你问的问题就更清楚了,否则人们会投票将其作为非问题关闭。你只需要添加几个句子,而不是试图在一句话(第二句)中解释所有内容。主键应该是自动递增的,因为它应该是行的id?(对于你所有的表格)++你能举例说明你在这里想做什么吗?