58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
/**
|
||
* PostgreSQL到达梦数据库转换规则配置
|
||
*/
|
||
|
||
module.exports = {
|
||
// 数据类型映射
|
||
dataTypeMapping: {
|
||
'int8': 'BIGINT',
|
||
'int4': 'INT',
|
||
'int2': 'SMALLINT',
|
||
'numeric': 'DECIMAL',
|
||
'varchar': 'VARCHAR',
|
||
'timestamp': 'TIMESTAMP',
|
||
'timestamptz': 'TIMESTAMP', // PostgreSQL timestamp with time zone
|
||
'bool': 'BIT',
|
||
'text': 'VARCHAR(8000)', // 达梦的TEXT是CLOB不能建索引,改用VARCHAR
|
||
'bytea': 'BLOB',
|
||
'float8': 'DOUBLE', // PostgreSQL double precision
|
||
'float4': 'REAL', // PostgreSQL real/float
|
||
'float': 'REAL' // 通用float
|
||
},
|
||
|
||
// 序列DEFAULT值转换规则
|
||
sequencePatterns: {
|
||
// nextval('schema.seq_name'::regclass) -> IDENTITY(1,1)
|
||
pattern: /DEFAULT\s+nextval\s*\(\s*['"]([^'"]+)['"](::\w+)?\s*\)/gi,
|
||
replacement: 'IDENTITY(1, 1)'
|
||
},
|
||
|
||
// 需要移除的PostgreSQL特有语法
|
||
removePatterns: [
|
||
// COLLATE子句
|
||
/COLLATE\s+"[^"]+"/gi,
|
||
// USING子句
|
||
/USING\s+\w+/gi,
|
||
// 操作符类
|
||
/"pg_catalog"\."[^"]+_ops"/gi,
|
||
// ASC NULLS LAST / DESC NULLS FIRST
|
||
/\s+(ASC|DESC)\s+NULLS\s+(FIRST|LAST)/gi
|
||
],
|
||
|
||
// 索引列定义中的ASC/DESC(保留,但移除NULLS部分)
|
||
indexColumnPattern: /"(\w+)"\s+COLLATE\s+"[^"]+"\s+"[^"]+"\s+(ASC|DESC)\s+NULLS\s+(FIRST|LAST)/gi,
|
||
|
||
// COALESCE函数索引警告阈值
|
||
coalesceThreshold: 4, // 超过4个COALESCE函数会发出警告
|
||
|
||
// 达梦函数索引表达式长度限制
|
||
functionIndexMaxLength: 816,
|
||
|
||
// 输出配置
|
||
output: {
|
||
addConversionComment: true, // 添加转换说明注释
|
||
generateLog: true, // 生成转换日志
|
||
warningOnComplexIndex: true // 复杂索引发出警告
|
||
}
|
||
};
|