- 设置分区需要使用数据表的自定义属性,先在【项目设置】中调整并开启表的自定义属性,如下图:

-
修改数据库代码模板,如下图:


-
完整代码模板如下(可参考下方模板):
{{
let schemaName = it.schemaName ? `${it.schemaName}.` : '';
const tableKey = `${schemaName}${it.defKey}`;
let distributedClause = '',partitionClause='';
let partitions = [it.attr5,it.attr6,it.attr7,it.attr8,it.attr9,it.attr10,it.attr11,it.attr12];
if(it.attr1==='DISTRIBUTED' && it.attr2){
distributedClause = ` DISTRIBUTED ${it.attr2} `;
}else if(it.attr1==='REPLICATED'){
distributedClause = 'REPLICATED DEFAULT ';
}
if(it.attr3==1){
partitionClause = `PARTITION ${it.attr4}`;
let partitionParts = partitions.filter(item => item !== null && item !== '' && item !== undefined)
.map(item => `PARTITION ${item}`)
.join(',\n');
partitionClause += '\n(';
partitionClause += partitionParts;
partitionClause += ')';
}
function getDataType(field) {
const dataType = field.dbDataType.toUpperCase();
if (['VARCHAR'].includes(dataType)) {
return `${dataType}(${field.dataLen ? field.dataLen : 128})`;
} else if (['BOOLEAN','DATE','LONGBLOB','TIME'].includes(dataType)) {
return dataType;
} else if (dataType === 'FLOAT') {
return field.dataLen && field.dataLen >= 1 && field.dataLen <= 53 ? `${dataType}(${field.dataLen})` : dataType;
} else if (dataType === 'DOUBLE') {
return field.dataLen && field.dataLen >= 0 && field.dataLen <= 30 ? (field.numScale && field.numScale >= 0 && field.numScale <= field.dataLen ? `${dataType}(${field.dataLen},${field.numScale})` : `${dataType}(${field.dataLen},30)`) : `${dataType}(30,30)`;
} else if (dataType === 'DECIMAL') {
return field.dataLen && field.dataLen >= 0 && field.dataLen <= 255 ? (field.numScale && field.numScale >= 0 && field.numScale <= field.dataLen ? `${dataType}(${field.dataLen},${field.numScale})` : `${dataType}(${field.dataLen})`) : `${dataType}`;
} else {
return field.dataLen && field.dataLen >= 0 ? `${dataType}(${field.dataLen})` : dataType;
}
}
function getFieldDefinition(field, index, fields) {
const dataType = getDataType(field);
const notNull = field.notNull ? ' NOT NULL' : ' NULL';
const autoIncrement = field.autoIncrement ? ' AUTO_INCREMENT' : '';
const defaultValue = field.defaultValue ? ` DEFAULT ${field.defaultValue}` : '';
const comment = (field.defName || field.intro) ? ` COMMENT '${field.defName}${field.defName && field.intro ? "; " : ""}${field.intro}'` : '';
return `"${field.defKey}" ${dataType}${notNull}${autoIncrement}${defaultValue}${comment}${index < fields.length - 1 || pkList.length > 0 ? ',' : ''}`;
}
}}
DROP TABLE IF EXISTS {{= tableKey }};
CREATE TABLE {{= tableKey }}(
{{ pkList = [] ; }}
{{~it.fields:field:index}}
{{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}
{{= getFieldDefinition(field, index, it.fields) }}
{{~}}
{{? pkList.length > 0 }}
PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i < pkList.length - 1 ? ',' : '' }}{{~}})
{{?}}
){{=distributedClause}}{{? (it.intro && it.intro !== '') || (it.defName && it.defName !== '') }} COMMENT '{{=it.defName ? it.defName + "" : ""}}'{{?}}
{{=partitionClause}};$blankline