from sys import stdin
def read_odps_ddl():
rows = []
table_name = 'demo_table'
table_comment = 'demo_table'
for i in stdin.readlines():
i = i.strip().strip(',')
if 'CREATE TABLE' in i:
table_name = i.split()[-1]
continue
if i.startswith('COMMENT'):
table_comment = i.split()[-1].strip("'")
continue
if 'PARTITIONED' in i or 'LIFECYCLE' in i:
continue
row_info = i.split()
if len(row_info) != 2 and len(row_info) != 4:
continue
key = row_info[0].strip('`')
odps_type = row_info[1]
comment = '无' if len(row_info) <= 3 else row_info[3].strip("'")
rows.append({
'key': key,
'odps_type': odps_type,
'comment': comment
})
return {
'rows': rows,
'table_name': table_name,
'table_comment': table_comment
}
ddl = read_odps_ddl()
# print(ddl)
print(f'''
create table `{ddl['table_name']}` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
'''.strip())
for i in ddl['rows']:
(key, odps_type, comment) = i['key'], i['odps_type'], i['comment']
if key in ('id', 'gmt_create', 'gmt_modified'):
continue
if odps_type == 'STRING':
mysql_type = 'varchar(64)'
elif odps_type == 'BIGINT':
mysql_type = 'bigint(20)'
elif odps_type == 'DOUBLE':
mysql_type = 'decimal(18,6)'
elif odps_type == 'DATETIME':
mysql_type = 'datetime'
else:
mysql_type = '???'
curr = f'''`{key}` {mysql_type} DEFAULT NULL COMMENT '{comment}','''
print(curr)
print(f"""PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='{ddl['table_comment']}' """)
ZnJvbSBzeXMgaW1wb3J0IHN0ZGluCgoKZGVmIHJlYWRfb2Rwc19kZGwoKToKICAgIHJvd3MgPSBbXQogICAgdGFibGVfbmFtZSA9ICdkZW1vX3RhYmxlJwogICAgdGFibGVfY29tbWVudCA9ICdkZW1vX3RhYmxlJwogICAgZm9yIGkgaW4gc3RkaW4ucmVhZGxpbmVzKCk6CiAgICAgICAgaSA9IGkuc3RyaXAoKS5zdHJpcCgnLCcpCiAgICAgICAgaWYgJ0NSRUFURSBUQUJMRScgaW4gaToKICAgICAgICAgICAgdGFibGVfbmFtZSA9IGkuc3BsaXQoKVstMV0KICAgICAgICAgICAgY29udGludWUKICAgICAgICBpZiBpLnN0YXJ0c3dpdGgoJ0NPTU1FTlQnKToKICAgICAgICAgICAgdGFibGVfY29tbWVudCA9IGkuc3BsaXQoKVstMV0uc3RyaXAoIiciKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmICdQQVJUSVRJT05FRCcgaW4gaSBvciAnTElGRUNZQ0xFJyBpbiBpOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIHJvd19pbmZvID0gaS5zcGxpdCgpCiAgICAgICAgaWYgbGVuKHJvd19pbmZvKSAhPSAyIGFuZCBsZW4ocm93X2luZm8pICE9IDQ6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAga2V5ID0gcm93X2luZm9bMF0uc3RyaXAoJ2AnKQogICAgICAgIG9kcHNfdHlwZSA9IHJvd19pbmZvWzFdCiAgICAgICAgY29tbWVudCA9ICfml6AnIGlmIGxlbihyb3dfaW5mbykgPD0gMyBlbHNlIHJvd19pbmZvWzNdLnN0cmlwKCInIikKICAgICAgICByb3dzLmFwcGVuZCh7CiAgICAgICAgICAgICdrZXknOiBrZXksCiAgICAgICAgICAgICdvZHBzX3R5cGUnOiBvZHBzX3R5cGUsCiAgICAgICAgICAgICdjb21tZW50JzogY29tbWVudAogICAgICAgIH0pCiAgICByZXR1cm4gewogICAgICAgICdyb3dzJzogcm93cywKICAgICAgICAndGFibGVfbmFtZSc6IHRhYmxlX25hbWUsCiAgICAgICAgJ3RhYmxlX2NvbW1lbnQnOiB0YWJsZV9jb21tZW50CiAgICB9CgoKZGRsID0gcmVhZF9vZHBzX2RkbCgpCiMgcHJpbnQoZGRsKQoKcHJpbnQoZicnJwpjcmVhdGUgdGFibGUgYHtkZGxbJ3RhYmxlX25hbWUnXX1gICgKYGlkYCBiaWdpbnQoMjApIHVuc2lnbmVkIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIENPTU1FTlQgJ+S4u+mUricsCmBnbXRfY3JlYXRlYCBkYXRldGltZSBOT1QgTlVMTCBDT01NRU5UICfliJvlu7rml7bpl7QnLApgZ210X21vZGlmaWVkYCBkYXRldGltZSBOT1QgTlVMTCBDT01NRU5UICfkv67mlLnml7bpl7QnLAonJycuc3RyaXAoKSkKCmZvciBpIGluIGRkbFsncm93cyddOgogICAgKGtleSwgb2Rwc190eXBlLCBjb21tZW50KSA9IGlbJ2tleSddLCBpWydvZHBzX3R5cGUnXSwgaVsnY29tbWVudCddCiAgICBpZiBrZXkgaW4gKCdpZCcsICdnbXRfY3JlYXRlJywgJ2dtdF9tb2RpZmllZCcpOgogICAgICAgIGNvbnRpbnVlCiAgICBpZiBvZHBzX3R5cGUgPT0gJ1NUUklORyc6CiAgICAgICAgbXlzcWxfdHlwZSA9ICd2YXJjaGFyKDY0KScKICAgIGVsaWYgb2Rwc190eXBlID09ICdCSUdJTlQnOgogICAgICAgIG15c3FsX3R5cGUgPSAnYmlnaW50KDIwKScKICAgIGVsaWYgb2Rwc190eXBlID09ICdET1VCTEUnOgogICAgICAgIG15c3FsX3R5cGUgPSAnZGVjaW1hbCgxOCw2KScKICAgIGVsaWYgb2Rwc190eXBlID09ICdEQVRFVElNRSc6CiAgICAgICAgbXlzcWxfdHlwZSA9ICdkYXRldGltZScKICAgIGVsc2U6CiAgICAgICAgbXlzcWxfdHlwZSA9ICc/Pz8nCiAgICBjdXJyID0gZicnJ2B7a2V5fWAge215c3FsX3R5cGV9IERFRkFVTFQgTlVMTCBDT01NRU5UICd7Y29tbWVudH0nLCcnJwogICAgcHJpbnQoY3VycikKCnByaW50KGYiIiJQUklNQVJZIEtFWSAoYGlkYCkpIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWdiayBDT01NRU5UPSd7ZGRsWyd0YWJsZV9jb21tZW50J119JyAiIiIpCg==
Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgc21hcnRfZHdfbWV0cmljX3YyX2R3ZF9jaGFuZ2VfcmVxdWVzdCgKCWlkIEJJR0lOVCBDT01NRU5UICdJRCcsCgkgZ210X2NyZWF0ZSBTVFJJTkcgQ09NTUVOVCAn5Yib5bu65pe26Ze0JywKCSBnbXRfbW9kaWZpZWQgU1RSSU5HIENPTU1FTlQgJ+S/ruaUueaXtumXtCcsCgkgd29ya19ubyBTVFJJTkcgQ09NTUVOVCAn5Yib5bu65Lq65bel5Y+3JywKCSB3b3JrX25hbWUgU1RSSU5HIENPTU1FTlQgJ+WIm+W7uuS6uuWnk+WQjScsCgkgbW9kaWZpZXIgU1RSSU5HIENPTU1FTlQgJ+S/ruaUueS6uuW3peWPtycsCgkgbW9kaWZpZXJfbmFtZSBTVFJJTkcgQ09NTUVOVCAn5L+u5pS55Lq65aeT5ZCNJywKCSBkZXNjcmlwdGlvbiBTVFJJTkcgQ09NTUVOVCAn5Y+Y5pu05Y6f5ZugJywKCSBhcHBfaWQgQklHSU5UIENPTU1FTlQgJ+W6lOeUqElEJywKCSBhcHBfbmFtZSBTVFJJTkcgQ09NTUVOVCAn5bqU55So5ZCNJywKCSByZWxlYXNlX2RhdGUgU1RSSU5HIENPTU1FTlQgJ+WPkeW4g+aXtumXtCcsCgkgd29ya19pdGVtX2lkcyBTVFJJTkcgQ09NTUVOVCAn5YWz6IGU5bel5L2c6aG555uuSURTJywKCSBjb250ZW50IFNUUklORyBDT01NRU5UICflj5jmm7TlhoXlrrknLAoJIGJyYW5jaCBTVFJJTkcgQ09NTUVOVCAn5YiG5pSvJywKCSByZXBvX3BhdGggU1RSSU5HIENPTU1FTlQgJ+S7o+eggeW6kycKKSAKUEFSVElUSU9ORUQgQlkgKGRzIFNUUklORyBDT01NRU5UICfliIbljLrlrZfmrrUnKSAKU1RPUkVEIEFTIEFMSU9SQyAgClRCTFBST1BFUlRJRVMgKCdjb21tZW50Jz0n5Y+Y5pu0JywKCSAnc3RvcmFnZXN0cmF0ZWd5Jz0nbm9ybWFsJykgCkxJRkVDWUNMRSAzOw==
CREATE TABLE IF NOT EXISTS smart_dw_metric_v2_dwd_change_request(
id BIGINT COMMENT 'ID',
gmt_create STRING COMMENT '创建时间',
gmt_modified STRING COMMENT '修改时间',
work_no STRING COMMENT '创建人工号',
work_name STRING COMMENT '创建人姓名',
modifier STRING COMMENT '修改人工号',
modifier_name STRING COMMENT '修改人姓名',
description STRING COMMENT '变更原因',
app_id BIGINT COMMENT '应用ID',
app_name STRING COMMENT '应用名',
release_date STRING COMMENT '发布时间',
work_item_ids STRING COMMENT '关联工作项目IDS',
content STRING COMMENT '变更内容',
branch STRING COMMENT '分支',
repo_path STRING COMMENT '代码库'
)
PARTITIONED BY (ds STRING COMMENT '分区字段')
STORED AS ALIORC
TBLPROPERTIES ('comment'='变更',
'storagestrategy'='normal')
LIFECYCLE 3;
create table `smart_dw_metric_v2_dwd_change_request(` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime NOT NULL COMMENT '修改时间',
`work_no` varchar(64) DEFAULT NULL COMMENT '创建人工号',
`work_name` varchar(64) DEFAULT NULL COMMENT '创建人姓名',
`modifier` varchar(64) DEFAULT NULL COMMENT '修改人工号',
`modifier_name` varchar(64) DEFAULT NULL COMMENT '修改人姓名',
`description` varchar(64) DEFAULT NULL COMMENT '变更原因',
`app_id` bigint(20) DEFAULT NULL COMMENT '应用ID',
`app_name` varchar(64) DEFAULT NULL COMMENT '应用名',
`release_date` varchar(64) DEFAULT NULL COMMENT '发布时间',
`work_item_ids` varchar(64) DEFAULT NULL COMMENT '关联工作项目IDS',
`content` varchar(64) DEFAULT NULL COMMENT '变更内容',
`branch` varchar(64) DEFAULT NULL COMMENT '分支',
`repo_path` varchar(64) DEFAULT NULL COMMENT '代码库',
`TBLPROPERTIES` ??? DEFAULT NULL COMMENT '无',
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='demo_table'