You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/05/08 02:12:30 UTC

[iotdb] branch jira-1313 created (now 0b88726)

This is an automated email from the ASF dual-hosted git repository.

haonan pushed a change to branch jira-1313
in repository https://gitbox.apache.org/repos/asf/iotdb.git.


      at 0b88726  [IOTDB-1313] Fix lossing time precision when import csv with unsupported timestamp format

This branch includes the following new commits:

     new 0b88726  [IOTDB-1313] Fix lossing time precision when import csv with unsupported timestamp format

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[iotdb] 01/01: [IOTDB-1313] Fix lossing time precision when import csv with unsupported timestamp format

Posted by ha...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch jira-1313
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 0b88726e62c51c9da0df9260e3ac5401df705228
Author: HTHou <hh...@outlook.com>
AuthorDate: Sat May 8 10:11:45 2021 +0800

    [IOTDB-1313] Fix lossing time precision when import csv with unsupported timestamp format
---
 .../org/apache/iotdb/tool/AbstractCsvTool.java     | 14 +++++++--
 .../main/java/org/apache/iotdb/tool/ExportCsv.java |  2 +-
 .../main/java/org/apache/iotdb/tool/ImportCsv.java | 34 +++++-----------------
 3 files changed, 20 insertions(+), 30 deletions(-)

diff --git a/cli/src/main/java/org/apache/iotdb/tool/AbstractCsvTool.java b/cli/src/main/java/org/apache/iotdb/tool/AbstractCsvTool.java
index ff8b925..de47542 100644
--- a/cli/src/main/java/org/apache/iotdb/tool/AbstractCsvTool.java
+++ b/cli/src/main/java/org/apache/iotdb/tool/AbstractCsvTool.java
@@ -53,12 +53,15 @@ public abstract class AbstractCsvTool {
   protected static final String TIME_ZONE_ARGS = "tz";
   protected static final String TIME_ZONE_NAME = "timeZone";
   protected static final int MAX_HELP_CONSOLE_WIDTH = 92;
-  protected static final String[] SUPPORT_TIME_FORMAT =
+  protected static final String[] NUMBER_TIME_FORMAT =
       new String[] {
         "default",
         "long",
         "number",
-        "timestamp",
+        "timestamp"
+      };
+  protected static final String[] STRING_TIME_FORMAT =
+      new String[] {
         "yyyy-MM-dd HH:mm:ss",
         "yyyy/MM/dd HH:mm:ss",
         "yyyy.MM.dd HH:mm:ss",
@@ -129,7 +132,12 @@ public abstract class AbstractCsvTool {
   }
 
   protected static boolean checkTimeFormat() {
-    for (String format : SUPPORT_TIME_FORMAT) {
+    for (String format : NUMBER_TIME_FORMAT) {
+      if (timeFormat.equals(format)) {
+        return true;
+      }
+    }
+    for (String format : STRING_TIME_FORMAT) {
       if (timeFormat.equals(format)) {
         return true;
       }
diff --git a/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java b/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java
index ceb0142..5b1d9ca 100644
--- a/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java
+++ b/cli/src/main/java/org/apache/iotdb/tool/ExportCsv.java
@@ -312,7 +312,7 @@ public class ExportCsv extends AbstractCsvTool {
         break;
       case "timestamp":
       case "long":
-      case "nubmer":
+      case "number":
         bw.write(time + ",");
         break;
       default:
diff --git a/cli/src/main/java/org/apache/iotdb/tool/ImportCsv.java b/cli/src/main/java/org/apache/iotdb/tool/ImportCsv.java
index 224d513..fdf32b3 100644
--- a/cli/src/main/java/org/apache/iotdb/tool/ImportCsv.java
+++ b/cli/src/main/java/org/apache/iotdb/tool/ImportCsv.java
@@ -33,8 +33,6 @@ import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -57,8 +55,6 @@ public class ImportCsv extends AbstractCsvTool {
   private static final String FILE_ARGS = "f";
   private static final String FILE_NAME = "file or folder";
   private static final String FILE_SUFFIX = "csv";
-  private static final Logger logger = LoggerFactory.getLogger(ImportCsv.class);
-  private static final String TIME_TYPE = "It isn't a {} time type";
 
   private static final String TSFILEDB_CLI_PREFIX = "ImportCsv";
   private static final String ILLEGAL_PATH_ARGUMENT = "Path parameter is null";
@@ -249,9 +245,6 @@ public class ImportCsv extends AbstractCsvTool {
   }
 
   private static SimpleDateFormat formatterInit(String time) {
-    SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
-    SimpleDateFormat format2 = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
-    SimpleDateFormat format3 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
 
     try {
       Long.parseLong(time);
@@ -260,25 +253,14 @@ public class ImportCsv extends AbstractCsvTool {
       // do nothing
     }
 
-    try {
-      format1.parse(time).getTime();
-      return format1;
-    } catch (java.text.ParseException ignored) {
-      // do nothing
-    }
-
-    try {
-      format2.parse(time).getTime();
-      return format2;
-    } catch (java.text.ParseException ignored) {
-      // do nothing
-    }
-
-    try {
-      format3.parse(time).getTime();
-      return format3;
-    } catch (java.text.ParseException ignored) {
-      // do nothing
+    for (String timeFormat : STRING_TIME_FORMAT) {
+      SimpleDateFormat format = new SimpleDateFormat(timeFormat);
+      try {
+        format.parse(time).getTime();
+        return format;
+      } catch (java.text.ParseException ignored) {
+        // do nothing
+      }
     }
     return null;
   }