diff --git a/src/main/java/com/gauss/common/db/meta/ColumnMeta.java b/src/main/java/com/gauss/common/db/meta/ColumnMeta.java index efa09eac29893652b7a0c37c32247be2dc7680a3..7615fd93266edda77f1197c392ff48ee5711e383 100644 --- a/src/main/java/com/gauss/common/db/meta/ColumnMeta.java +++ b/src/main/java/com/gauss/common/db/meta/ColumnMeta.java @@ -22,6 +22,10 @@ public class ColumnMeta { this.typeName = typeName; } + public String getTypeName() { + return typeName; + } + public String getName() { return name; } diff --git a/src/main/java/com/gauss/common/db/sql/SqlTemplate.java b/src/main/java/com/gauss/common/db/sql/SqlTemplate.java index b99dbe2d2355e963a67448d3e8fefd6fb16fb0eb..e934ae94116ceaa4b038060f0597347ec2085ee5 100644 --- a/src/main/java/com/gauss/common/db/sql/SqlTemplate.java +++ b/src/main/java/com/gauss/common/db/sql/SqlTemplate.java @@ -43,10 +43,10 @@ public class SqlTemplate { default: sb.append(meta.getName()); } - sb.append(" || '_' || "); + sb.append(" || "); } int length = sb.length(); - sb.delete(length - 11, length); + sb.delete(length - 4, length); sb.append("))) "); return sb.toString(); } @@ -57,13 +57,25 @@ public class SqlTemplate { List columns = context.getTableMeta().getColumns(); for (ColumnMeta meta : columns) { switch (meta.getType()) { + case Types.BOOLEAN: + case Types.BIT: + sb.append("convert(").append(meta.getName()).append(",int)"); + break; + case Types.CHAR: + sb.append("convert(").append(meta.getName()).append(",char)"); + break; case Types.REAL: case Types.FLOAT: case Types.DOUBLE: sb.append("round(convert(").append(meta.getName()).append(",char), 10)"); break; + case Types.VARBINARY: case Types.BINARY: - sb.append("lower(hex(").append(meta.getName()).append("))"); + if (meta.getTypeName().equals("GEOMETRY")) { + sb.append("substring(AsText(").append(meta.getName()).append("), 6)"); + } else { + sb.append("lower(hex(").append(meta.getName()).append("))"); + } break; default: sb.append(meta.getName()); @@ -82,7 +94,11 @@ public class SqlTemplate { for (ColumnMeta meta : columns) { switch (meta.getType()) { case Types.BOOLEAN: - sb.append("cast(").append(meta.getName()).append(" as int"); + case Types.BIT: + sb.append("cast(").append(meta.getName()).append(" as int)"); + break; + case Types.CHAR: + sb.append("cast(").append(meta.getName()).append(" as varchar)"); break; case Types.REAL: //same as double @@ -91,8 +107,13 @@ public class SqlTemplate { case Types.DOUBLE: sb.append("round(").append(meta.getName()).append("::numeric, 10)"); break; + case Types.VARBINARY: case Types.BINARY: - sb.append("substring(cast(").append(meta.getName()).append(" as varchar) from 3)"); + if (meta.getTypeName().equals("GEOMETRY")) { + sb.append("replace(cast(").append(meta.getName()).append(" as varchar),',',' ')"); + } else { + sb.append("substring(cast(").append(meta.getName()).append(" as varchar) from 3)"); + } break; default: sb.append(meta.getName()); diff --git a/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java b/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java index 203df0f9a4c1e7353cc9741e147194e27a8485fc..d0d44efae9d1752ed8bab864ae1088018d2fc89d 100644 --- a/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java +++ b/src/main/java/com/gauss/extractor/db/DbOnceFullRecordExtractor.java @@ -57,7 +57,6 @@ public class DbOnceFullRecordExtractor extends AbstractRecordExtractor { } else { //todo } - } // 启动异步线程 diff --git a/src/main/resources/gauss.properties b/src/main/resources/gauss.properties index 2d0432b02ebefa40f48a721dd26762349f9c07e8..4dd9041d7fa566bad562d416a59c04ec499b4577 100644 --- a/src/main/resources/gauss.properties +++ b/src/main/resources/gauss.properties @@ -38,7 +38,6 @@ gauss.extractor.noupdate.thresold=0 gauss.applier.concurrent.enable=true gauss.applier.concurrent.global=false gauss.applier.concurrent.size=30 -gauss.applier.dump=false # stats gauss.stat.print.interval=5 gauss.progress.print.interval=1 \ No newline at end of file