Enterprise Architect 修改模板,适应mysql生成ddl
2017-03-14 16:10
295 查看
Enterprise Architect 修改模板,适应mysql生成ddl
版本:Enterprise Architect 12前言:Enterprise Architect可以导入DDL,直接生成相应的图像,通过可视化的界面给呈现相应的数据库,但是通过实验,发现它对mysql数据库的支持非常有限,所以本人对之前的模板进行了修改,从而导出的DDL可以直接导入数据库中建表
1、导入mysql的数据源
2、建立mysql的主外键关系
3、修改ddl模板
细解:
1、Enterprise Architect读取的数据源,真正所在的位置在C:\Windows\SysWOW64\odbcad32.exe上面,
我们安装mysql 64位数据源ODBC的时候安装到了C:\Windows\System32\odbcad32.exe这里,所以出现了不匹配
解决方案:
参考网上的,下载mysql odbc 32位的,然后打开C:\Windows\SysWOW64\odbcad32.exe的文件,添加相应的数据源
2、mysql的主外键关系
工具箱中拖入Assosition,从包含外键的表指向来源的表,然后编辑相应的字段
3、ddl模板
出现问题:
如果字段不需要定义长度,例如timestamp,则有个0
SET FOREIGN_KEY_CHECKS=0后面没有分号,同1
没有default值
有对于数据库名的强引用,不方便加表
comment值被隐藏
解决:
修改模板
菜单栏–>包–>数据库工程–>修改ddl模板–>找相应的类并替换
comment
在导出时 格式–>评语水平–>全部
DDLColumnDefinition
%PI=" "% %DDLName("EA", "COLUMN", "", "INCLUDE_SURROUND")% %DDLDataType% $Type = %columnProperty:"TYPE"% $Default = %columnProperty:"DEFAULT"% $Find = "" %if $Type != "ENUM" and $Type != "SET"% %if $Default != ""% $Default = "DEFAULT " + $Default %endIf% %endIf% %if columnBoolProperty:"ZEROFILL" == "T"% ZEROFILL %endIf% %if columnBoolProperty:"UNSIGNED" == "T"% UNSIGNED %endIf% %if columnBoolProperty:"NULLABLE" == "T"% %if ddlOptionGenerateNullable == "T"% NULL %endIf% %else% NOT NULL %endIf% %if columnBoolProperty:"AutoNum" == "T"% AUTO_INCREMENT %else% %if $Default != ""% $Default %endIf% %endIf% %DDLColumnComment% %PI("I", "")% ,
DDLDataType
%PI=""% $Type = %columnProperty:"TYPE"% $DBMS = %ddlTableDBMS% $Size = %DDL_DATATYPE_SIZE($DBMS, $Type)% $LENGTH = %columnProperty:"LENGTH"% $Type %if $Size=="1" and $LENGTH != "0" and $LENGTH != ""% ( $LENGTH ) %elseIf $Size=="2"% ( %if columnProperty:"PRECISION"==""% 0 %else% %columnProperty:"PRECISION"% %endIf% %if columnProperty:"SCALE" != ""% ,%columnProperty:"SCALE"% %endIf% ) %endIf%
DDLName
%PI=""% %if $parameter1 == "EA"% %if $parameter3 == "INCLUDE_OWNER"% $owner=%ddlOwner% %if $parameter2 == "REFERENCE_TABLE"% $owner=%ddlReferenceTableOwner% %endIf% %endIf% %if $parameter2 == "OWNER"% $name=%ddlOwner% %elseIf $parameter2 == "TABLE"% $name=%ddlTableName% %if ddlUseAlias == "T"% $alias=%ddlTableAlias% %endIf% %elseIf $parameter2 == "PROCEDURE"% $name=%ddlProcedureName% %if ddlUseAlias == "T"% $alias=%ddlProcedureAlias% %endIf% %elseIf $parameter2 == "FUNCTION"% $name=%ddlFunctionName% %if ddlUseAlias == "T"% $alias=%ddlFunctionAlias% %endIf% %elseIf $parameter2 == "VIEW"% $name=%ddlViewName% %if ddlUseAlias == "T"% $alias=%ddlViewAlias% %endIf% %elseIf $parameter2 == "SEQUENCE"% $name=%ddlSequenceName% %if ddlUseAlias == "T"% $alias=%ddlSequenceAlias% %endIf% %elseIf $parameter2 == "PACKAGE"% $name=%ddlPackageName% %if ddlUseAlias == "T"% $alias=%ddlPackageAlias% %endIf% %elseIf $parameter2 == "COLUMN"% $name=%ddlColumnName% %if ddlUseAlias == "T"% $alias=%ddlColumnAlias% %endIf% %elseIf $parameter2 == "CONSTRAINT"% $name=%ddlConstraintName% %if ddlUseAlias == "T"% $alias=%ddlConstraintAlias% %endIf% %elseIf $parameter2 == "CONSTRAINT_COLUMN"% $name=%ddlConstraintColumnName% %if ddlUseAlias == "T"% $alias=%ddlConstraintColumnAlias% %endIf% %elseIf $parameter2 == "REFERENCE_TABLE"% $name=%ddlReferenceTableName% %if ddlUseAlias == "T"% $alias=%ddlReferenceTableAlias% %endIf% %elseIf $parameter2 == "REFERENCE_COLUMN"% $name=%ddlReferenceColumnName% %if ddlUseAlias == "T"% $alias=%ddlReferenceColumnAlias% %endIf% %endIf% %elseIf $parameter1 == "ODBC"% %if $parameter3 == "INCLUDE_OWNER"% $owner=%ddlSchemaOwner% %endIf% %if $parameter2 == "OWNER"% $name=%ddlSchemaOwner% %elseIf $parameter2 == "TABLE"% $name=%ddlSchemaTableName% %elseIf $parameter2 == "COLUMN"% $name=%ddlSchemaColumnName% %elseIf $parameter2 == "CONSTRAINT"% $name=%ddlSchemaConstraintName% %endIf% %endIf% %if $parameter4 == "INCLUDE_SURROUND"% $left=%DDLLeftSurround% $right=%DDLRightSurround% %if $name != ""% $name = $left + $name + $right %endIf% %if $alias != ""% $alias = $left + $alias + $right %endIf% %if $owner != ""% $owner = $left + $owner + $right %endIf% %endIf% %if ddlOptionUseAlias == "T" and $alias != ""% $fullName = $alias %else% $fullName = $name %endIf% $fullName
DDlScriptFile
%PI="\n\n"% %DDLScriptHeader% %DDLUseDatabase% $comment = "" $start = "" $end = "" %if ddlOptionCommentLevel=="All"% $comment = "T" $start = "/*" $end = "*/" %endIf% $fkCheckOff = "SET FOREIGN_KEY_CHECKS=0;" $fkCheckOff %EXECUTE_STRING("Foreign Key Checks", "Set FK Check off", "820", $fkCheckOff)% $script = %list="DDLDropView" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Drop Views $end %endIf% $script %endIf% $script = %list="DDLDropTable" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Drop Tables $end %endIf% $script %endIf% $script = %list="DDLDropProcedure" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Drop Stored Procedures $end %endIf% $script %endIf% $script = %list="DDLDropFunction" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Drop Functions $end %endIf% $script %endIf% $script = %list="DDLDropSequence" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Drop Sequences $end %endIf% $script %endIf% $script = %list="DDLCreateSequence" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Sequences $end %endIf% $script %endIf% $script = %list="DDLCreateFunction" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Functions $end %endIf% $script %endIf% $script = %list="DDLCreateTable" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Tables $end %endIf% $script %endIf% $script = %list="DDLCreateTableConstraints" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Primary Keys, Indexes, Uniques, Checks $end %endIf% $script %endIf% $script = %list="DDLCreateForeignKeys" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Foreign Key Constraints $end %endIf% $script %endIf% $fkCheckOff = "SET FOREIGN_KEY_CHECKS=1;" $fkCheckOff %EXECUTE_STRING("Foreign Key Checks", "Set FK Check on", "300", $fkCheckOff)% $script = %list="DDLCreateView" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Views $end %endIf% $script %endIf% $script = %list="DDLCreateProcedure" @separator="\n\n"% %if $script != ""% %if $comment == "T"% $start Create Stored Procedures $end %endIf% $script %endIf%
相关文章推荐
- Enterprise Architect 12 修改模板,适应mysql生成ddl
- flexBuilder3中生成的模板页不支持flash全屏的修改办法
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
- mysql 主从复制双主架构在线修改表结构、在线DDL
- 修改Sublime 2插件SublimeTmpl模板-Html生成模板
- ORACLE表生成MYSQL建表DDL
- 玩转Xcode之修改系统生成的注释模板
- myeclipse10 中修改html,servlet,jsp等的生成模板
- myeclipse10 中修改html,servlet,jsp等的生成模板
- Eclipse自动生成注释,修改注释模板
- mysql修改参数,适应FusionIO
- eclipse/myeclipse自动生成注释 模板的修改
- MyEclipse自动生成注释,修改注释模板
- 在ASP.NET MVC中修改默认代码生成/支架模板
- 修改XCODE自动生成代码模板
- 在ASP.NET MVC中修改默认代码生成/支架模板
- 修改GII生成模板
- MyEclipse自动生成注释,修改注释模板
- MyEclipse自动生成注释,修改注释模板
- 修改my.cnf文件后mysql无法生成mysql.sock文件