From a39353762712db0853c6229cbfc85b71e14fcfea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=AF=85?= Date: Tue, 31 Mar 2020 17:05:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0mongoDB=E4=B8=8D=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E7=9A=84=E5=AD=97=E6=AE=B5=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reader/mongodbreader/MongoDBReader.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/mongodbreader/src/main/java/com/alibaba/datax/plugin/reader/mongodbreader/MongoDBReader.java b/mongodbreader/src/main/java/com/alibaba/datax/plugin/reader/mongodbreader/MongoDBReader.java index ba7f07f4..d65c80fb 100644 --- a/mongodbreader/src/main/java/com/alibaba/datax/plugin/reader/mongodbreader/MongoDBReader.java +++ b/mongodbreader/src/main/java/com/alibaba/datax/plugin/reader/mongodbreader/MongoDBReader.java @@ -6,12 +6,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; -import com.alibaba.datax.common.element.BoolColumn; -import com.alibaba.datax.common.element.DateColumn; -import com.alibaba.datax.common.element.DoubleColumn; -import com.alibaba.datax.common.element.LongColumn; -import com.alibaba.datax.common.element.Record; -import com.alibaba.datax.common.element.StringColumn; +import com.alibaba.datax.common.element.*; import com.alibaba.datax.common.exception.DataXException; import com.alibaba.datax.common.plugin.RecordSender; import com.alibaba.datax.common.spi.Reader; @@ -127,6 +122,7 @@ public class MongoDBReader extends Reader { Iterator columnItera = mongodbColumnMeta.iterator(); while (columnItera.hasNext()) { JSONObject column = (JSONObject)columnItera.next(); + String columnType = column.getString(KeyConstant.COLUMN_TYPE).toLowerCase(); Object tempCol = item.get(column.getString(KeyConstant.COLUMN_NAME)); if (tempCol == null) { if (KeyConstant.isDocumentType(column.getString(KeyConstant.COLUMN_TYPE))) { @@ -149,8 +145,28 @@ public class MongoDBReader extends Reader { } } if (tempCol == null) { - //continue; 这个不能直接continue会导致record到目的端错位 - record.addColumn(new StringColumn(null)); +// continue;//如果没有这个字段,就跳过 + if ("int".equals(columnType)) { + record.addColumn(new LongColumn(0)); + } + else if ("long".equals(columnType)) { + record.addColumn(new LongColumn(0)); + } + else if ("boolean".equals(columnType)) { + record.addColumn(new BoolColumn(false)); + } + else if ("double".equals(columnType)) { + record.addColumn(new DoubleColumn(0.0)); + } + else if ("date".equals(columnType)) { + record.addColumn(new DateColumn(0L)); + } + else if ("bytes".equals(columnType)) { + record.addColumn(new BytesColumn(new byte[0])); + } + else { + record.addColumn(new StringColumn("")); + } }else if (tempCol instanceof Double) { //TODO deal with Double.isNaN() record.addColumn(new DoubleColumn((Double) tempCol));