console
var data = d3.csv.parse( d3.select("pre#data").text() );
var pk = {"字段": '!!!无主键!!!'};
var handleDefaultString = (defaultValue, typeName) => {
if (defaultValue === "AUTO_INCREMENT") {
return defaultValue;
}
var mappingDefaultValue = ()=> {
if (defaultValue === "零值") {
if (typeName === "DATETIME") {
return "1972-01-01 00:00:00";
}
if (typeName.startsWith("VARCHAR")) {
return "";
}
return "0";
}
return defaultValue;
}
return `DEFAULT '${mappingDefaultValue()}'`;
}
var handleTypeName = (typeName) => {
typeName = typeName.toUpperCase();
if (typeName.indexOf('UNSIGNED') > -1) {
var a = typeName.split(' ').filter(e => e !== "")
return `${a[1]} ${a[0]}`;
}
return typeName;
}
var eachlines = data.map(row => {
var typeName = handleTypeName(row["类型"])
var defaultString = handleDefaultString(row["默认"].trim(), typeName);
var commentValue = row["描述"];
if (row["其它"]) {
commentValue += ', '
commentValue += row["其它"];
}
if (row["索引"] && row["索引"].includes("主键")) {
pk = row;
}
return ` \`${row["字段"]}\` ${typeName} NOT NULL ${defaultString} COMMENT '${commentValue}'`
})
var sql =
`DROP TABLE IF EXISTS \`XXXXXX\`;
CREATE TABLE \`XXXXXX\` (
${eachlines.join(",\n")},
PRIMARY KEY (\`${pk["字段"]}\`)
) COMMENT='YYYYYYYYY';`;
var output = `
-- -----------------------------------------
-- 请替换表名(XXXXXX),表备注(YYYYYYYYY)
-- 如果有其他的索引,请自行手动添加
-- -----------------------------------------
${sql}
`;
d3.select("pre#data").text(output);
<pre id="data">
"字段","类型","索引","默认","描述","其它"
id,"unsigned bigint","主键",AUTO_INCREMENT,"",""
recharge_no,"varchar(32)","","零值","供应商预存款充值记录编号","格式请查看通用配置文档"
deposit_id,"unsigned bigint","","零值","供应商预存款ID",""
amount,"unsigned int","","零值","充值金额",""
status,"unsigned tinyint","","零值","充值状态","值请查看通用配置文档"
account_type,"unsigned tinyint","","零值","账户类型","值请查看通用配置文档"
receive_account_name,"varchar (255)","","零值","收款账号名称","快照"
receive_account,"varchar(32)","","零值","收款银行账号","快照"
pay_account_name,"varchar (255)","","零值","付款账号名称","快照"
pay_account,"varchar(32)","","零值","付款银行账号","快照"
account,"varchar(32)","","零值","银行账户",""
account_name,"varchar(32)","","零值","银行账户名称",""
create_id,"unsigned bigint","","零值","新建员工ID",""
create_time,datetime,"","1972-01-01 00:00:00","新建时间",""
update_id,"unsigned bigint","","零值","修改员工ID",""
update_time,datetime,"","1972-01-01 00:00:00","修改时间",""
</pre>