powerDesigner 导出mysql的sql脚本,且包含注释
为了和项目原有的数据库设计工具保持一致,近期使用了powerDesigner碰到了一些使用问题,汇总记录,希望对你有所帮助.
软件环境情况
- powerDesigner16.5.5.2(4734)
- mysql 5.6.30
- Win10专业版
powerdesigner 16.5 生成的sql语句在mysql数据库无法成功执行
用pd导出的sql,默认无法正常执行会报错
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'comment on table TB_PAYOUT_APPLY_UNIQUE is
'结汇申请防重表'' at line 1
![4a85db34925a0749776ebadf6ea4261e.png](https://i-blog.csdnimg.cn/blog_migrate/6dc17a266544c6d62d5e6a790a3b3328.png)
默认导出的sql为:
# 为了减少篇幅,减少了部分字段注释
create table TB_PAYOUT_APPLY_UNIQUE
(
SRC_MERCHANT_ID varchar(32) not null,
MER_ORDER_NO varchar(64) not null,
UNION_TIME datetime not null,
PAYOUT_SEQNO varchar(64) not null,
GMT_CREATE datetime null
);
comment on table TB_PAYOUT_APPLY_UNIQUE is
'结汇申请防重表';
comment on column TB_PAYOUT_APPLY_UNIQUE.SRC_MERCHANT_ID is
'交易来源商户号';
create index TB_PAYOUT_UNIQUE_IDX on TB_PAYOUT_APPLY_UNIQUE (
PAYOUT_SEQNO ASC
);
comment on column TB_PAYOUT_APPLY_UNIQUE.MER_ORDER_NO is '外部订单号';
在mysql下是无法直接执行
mysql的单字段修改,使用alter table方法
ALTER TABLE table_name MODIFY COLUMN column_name TINYINT(tinyint表示column类型) COMMENT '-1:默认值,1:人员id,2:公司id';
这种写法必须要指定 字段类型:TINYINT(tinyint表示column类型)
否则会报错.
那么需要修改sql的注释修改.
- 列注释修改
- 在Database-->edit Current DBMS... 设置dbms的属性,找到script-->objects-->column-->add
- 在原来的内容后添加 [ comment %.q:COMMENT%]]注意去掉一个]
原来的内容为: %20:COLUMN% [%National%?national ]%DATATYPE%%Unsigned%? unsigned [.O:[character set][charset]] %CharSet%%IDENTITY%? auto_increment:[ default %DEFAULT%]]
添加后的内容为:%20:COLUMN% %30:DATATYPE%[.Z:%Compressed%? compressed[%IDENTITY%?[.O: default autoincrement]:[%COMPUTE%? compute (%COMPUTE%):[ default %DEFAULT%]]] %CONSTDEFN%] - 把script-->objects-->column-->ColumnComment的Value清空 .
- 表注释修改
- 在Database-->edit Current DBMS... 设置dbms的属性
- 找到script-->objects-->Table-->TableComment: value中
修改后内容为 :alter table [%QUALIFIER%]%TABLE% comment %.60qA:COMMENT%
- 去掉主键注释
- 在Database-->edit Current DBMS... 设置dbms的属性,找到script-->objects-->Pkey-->PKeyComment 清空Value值, 如需要注释则修改其格式
其它修改
- 调整导出sql的编码格式
database-->Generate Database-->Format Encoding :UTF-8 点击确定
调整后的sql
create table TB_OCEAN_PAYOUT_BILL_RELATION
(
SRC_MERCHANT_ID varchar(32) not null comment '交易来源商户号',
MER_ORDER_NO varchar(64) not null comment '外部订单号',
PAYOUT_SEQNO varchar(64) not null comment '结汇交易流水号',
OCEAN_PAY_BILL_NO numeric(16,0) null comment '跨境支付单号',
DT_CREATE datetime null,
constraint PK_TB_OCEAN_PAYOUT_BILL_RELATI primary key clustered (SRC_MERCHANT_ID, MER_ORDER_NO)
);
alter table TB_OCEAN_PAYOUT_BILL_RELATION comment '结汇申请支付单关联表';
PowerDesigner如何导出SQL?
第一种方式,导出多条:
- 选择菜单栏上Database
- 更改当前数据库类型>>Change Current DBMS 按钮
- 将当前的DBMS更改成需要的DBMS(如果用的就是当前的mysql5.0就无需更换)
- 选择Database菜单栏下 >>Generate Database
- 设置导出.sql名字和路径.
- 更改当前数据库类型>>Change Current DBMS 按钮
![59cb2f02809232f54ee8bca61a8bcc24.png](https://i-blog.csdnimg.cn/blog_migrate/ace9e4e9545d4ac17158c96c8ae98353.jpeg)
- 将当前的DBMS更改成需要的DBMS(如果用的就是当前的mysql5.0就无需更换)
![5729be76eaaa8bd87837c3bef56e15c1.png](https://i-blog.csdnimg.cn/blog_migrate/4ec5db52b4b2d52023ae69f7abeb84d9.png)
- 也可以选择需要导出的表 Generate Database-> Selection
![1c5125e7c8376bd6a30ed2a12817188b.png](https://i-blog.csdnimg.cn/blog_migrate/a95ea4445300af980c19eece2e183c03.jpeg)
第二种,导出单表:
- 选中表
- 右键选择 sql Preview,如下图所示
![cb616a77b36454d0ff55159d9c1ceb93.png](https://i-blog.csdnimg.cn/blog_migrate/80a925b24774696e5b1e20edf413ac54.jpeg)
![fd3b59053ecccad2eaeef888744f3757.png](https://i-blog.csdnimg.cn/blog_migrate/881fc51bbe7abd807482ea5d5d6de815.jpeg)
其它pd使用的一些方式
- PowerDesigner 导出表结构 到Excel
- powerdesigner 为字段添加注释和最大、最小、默认值、非空约束
- powerdesigner 大小写转换
参考文档
MySql 修改列的注释信息的方法 powerDesigner 正向工程生成sql注释问题 (mysql注释问题)