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 07:20:24 UTC
[iotdb] branch master updated: [IOTDB-1232][IOTDB-1313] Fix lossing
time precision when import csv with unsupported timestamp format (#3142)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new e9ada63 [IOTDB-1232][IOTDB-1313] Fix lossing time precision when import csv with unsupported timestamp format (#3142)
e9ada63 is described below
commit e9ada637017068ad9adb2e956f07288b1d44f60b
Author: Haonan <hh...@outlook.com>
AuthorDate: Sat May 8 15:19:54 2021 +0800
[IOTDB-1232][IOTDB-1313] Fix lossing time precision when import csv with unsupported timestamp format (#3142)
---
.../org/apache/iotdb/tool/AbstractCsvTool.java | 39 ++++++++++++----------
.../main/java/org/apache/iotdb/tool/ExportCsv.java | 2 +-
.../main/java/org/apache/iotdb/tool/ImportCsv.java | 34 +++++--------------
3 files changed, 30 insertions(+), 45 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..90764b5 100644
--- a/cli/src/main/java/org/apache/iotdb/tool/AbstractCsvTool.java
+++ b/cli/src/main/java/org/apache/iotdb/tool/AbstractCsvTool.java
@@ -53,24 +53,10 @@ 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[] TIME_FORMAT =
+ new String[] {"default", "long", "number", "timestamp"};
+ protected static final String[] STRING_TIME_FORMAT =
new String[] {
- "default",
- "long",
- "number",
- "timestamp",
- "yyyy-MM-dd HH:mm:ss",
- "yyyy/MM/dd HH:mm:ss",
- "yyyy.MM.dd HH:mm:ss",
- "yyyy-MM-dd'T'HH:mm:ss",
- "yyyy/MM/dd'T'HH:mm:ss",
- "yyyy.MM.dd'T'HH:mm:ss",
- "yyyy-MM-dd HH:mm:ssZZ",
- "yyyy/MM/dd HH:mm:ssZZ",
- "yyyy.MM.dd HH:mm:ssZZ",
- "yyyy-MM-dd'T'HH:mm:ssZZ",
- "yyyy/MM/dd'T'HH:mm:ssZZ",
- "yyyy.MM.dd'T'HH:mm:ssZZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZ",
"yyyy/MM/dd HH:mm:ss.SSS",
"yyyy-MM-dd HH:mm:ss.SSS",
@@ -84,6 +70,18 @@ public abstract class AbstractCsvTool {
"yyyy.MM.dd HH:mm:ss.SSSZZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZZ",
"yyyy/MM/dd'T'HH:mm:ss.SSSZZ",
+ "yyyy-MM-dd HH:mm:ss",
+ "yyyy/MM/dd HH:mm:ss",
+ "yyyy.MM.dd HH:mm:ss",
+ "yyyy-MM-dd'T'HH:mm:ss",
+ "yyyy/MM/dd'T'HH:mm:ss",
+ "yyyy.MM.dd'T'HH:mm:ss",
+ "yyyy-MM-dd HH:mm:ssZZ",
+ "yyyy/MM/dd HH:mm:ssZZ",
+ "yyyy.MM.dd HH:mm:ssZZ",
+ "yyyy-MM-dd'T'HH:mm:ssZZ",
+ "yyyy/MM/dd'T'HH:mm:ssZZ",
+ "yyyy.MM.dd'T'HH:mm:ssZZ",
};
protected static String host;
protected static String port;
@@ -129,7 +127,12 @@ public abstract class AbstractCsvTool {
}
protected static boolean checkTimeFormat() {
- for (String format : SUPPORT_TIME_FORMAT) {
+ for (String format : 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;
}