This is an automated email from the ASF dual-hosted git repository.
critas 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 93671e5a0e3 Check database by show databases (#15299)
93671e5a0e3 is described below
commit 93671e5a0e36ad73f5d5813bff030bf4851e1653
Author: Summer <[email protected]>
AuthorDate: Wed Apr 9 17:47:22 2025 +0800
Check database by show databases (#15299)
* check database by 'show databases'
* check database by 'show databases'
* add desc when have no table to export
* Update
iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchemaTable.java
Co-authored-by: CritasWang <[email protected]>
* Update
iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchemaTable.java
Co-authored-by: CritasWang <[email protected]>
---------
Co-authored-by: 2b3c511 <[email protected]>
Co-authored-by: CritasWang <[email protected]>
---
.../org/apache/iotdb/tool/common/Constants.java | 3 +
.../org/apache/iotdb/tool/schema/ExportSchema.java | 16 +---
.../iotdb/tool/schema/ExportSchemaTable.java | 98 +++++++++++++++-------
3 files changed, 73 insertions(+), 44 deletions(-)
diff --git
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/common/Constants.java
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/common/Constants.java
index 787cd6b3d18..c797bb0d27f 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/common/Constants.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/common/Constants.java
@@ -228,6 +228,8 @@ public class Constants {
"The target database %s does not exist";
public static final String TARGET_TABLE_NOT_EXIST_MSG =
"There are no tables or the target table %s does not exist";
+ public static final String TARGET_TABLE_EMPTY_MSG =
+ "There are no tables to export. Please check if the tables in the target
database exist and if you have permission to access them.";
public static final String[] TIME_FORMAT =
new String[] {"default", "long", "number", "timestamp"};
@@ -299,6 +301,7 @@ public class Constants {
public static final String EXPORT_SCHEMA_TABLES_SELECT =
"select * from information_schema.tables where database = '%s'";
public static final String EXPORT_SCHEMA_TABLES_SHOW = "show tables details
from %s";
+ public static final String EXPORT_SCHEMA_TABLES_SHOW_DATABASES = "show
databases";
public static final String EXPORT_SCHEMA_COLUMNS_SELECT =
"select * from information_schema.columns where database like '%s' and
table_name like '%s'";
public static final String EXPORT_SCHEMA_COLUMNS_DESC = "desc %s.%s details";
diff --git
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchema.java
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchema.java
index 9db300ddd12..fe6434ff06c 100644
---
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchema.java
+++
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchema.java
@@ -36,10 +36,7 @@ import org.apache.commons.cli.ParseException;
import org.apache.commons.lang3.StringUtils;
import org.jline.reader.LineReader;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
/** Export Schema CSV file. */
public class ExportSchema extends AbstractSchemaTool {
@@ -121,6 +118,7 @@ public class ExportSchema extends AbstractSchemaTool {
exportSchema.init();
exportSchema.exportSchemaToSqlFile();
}
+ ioTPrinter.println(Constants.EXPORT_COMPLETELY);
return Constants.CODE_OK;
} catch (InterruptedException e) {
ioTPrinter.println(String.format("Export schema fail: %s",
e.getMessage()));
@@ -132,18 +130,6 @@ public class ExportSchema extends AbstractSchemaTool {
}
}
- private static void dumpFromPathFile(AbstractExportSchema exportSchema,
String pathFile)
- throws IOException {
- try (BufferedReader reader = new BufferedReader(new FileReader(pathFile)))
{
- String path;
- int index = 0;
- while ((path = reader.readLine()) != null) {
- exportSchema.exportSchemaToCsvFile(path, index);
- index++;
- }
- }
- }
-
private static void parseSpecialParams(CommandLine commandLine) throws
ArgsErrorException {
targetDirectory =
checkRequiredArg(Constants.TARGET_DIR_ARGS, Constants.TARGET_DIR_NAME,
commandLine, null);
diff --git
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchemaTable.java
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchemaTable.java
index b7fc6a5ca2c..8644dac5adf 100644
---
a/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchemaTable.java
+++
b/iotdb-client/cli/src/main/java/org/apache/iotdb/tool/schema/ExportSchemaTable.java
@@ -63,46 +63,72 @@ public class ExportSchemaTable extends AbstractExportSchema
{
.enableAutoFetch(false)
.database(database)
.build();
- SessionDataSet sessionDataSet = null;
- try (ITableSession session = sessionPool.getSession()) {
- sessionDataSet =
- session.executeQueryStatement(
- String.format(Constants.EXPORT_SCHEMA_TABLES_SELECT, database));
- checkDataBaseAndParseTablesBySelectSchema(sessionDataSet);
+ checkDatabase();
+ try {
+
parseTablesBySelectSchema(String.format(Constants.EXPORT_SCHEMA_TABLES_SELECT,
database));
} catch (StatementExecutionException | IoTDBConnectionException e) {
try {
- sessionDataSet =
- session.executeQueryStatement(
- String.format(Constants.EXPORT_SCHEMA_TABLES_SHOW, database));
- checkDataBaseAndParseTablesByShowSchema(sessionDataSet);
+
parseTablesByShowSchema(String.format(Constants.EXPORT_SCHEMA_TABLES_SHOW,
database));
} catch (IoTDBConnectionException | StatementExecutionException e1) {
ioTPrinter.println(Constants.INSERT_SQL_MEET_ERROR_MSG +
e.getMessage());
System.exit(1);
}
+ }
+ if (MapUtils.isEmpty(tableCommentList)) {
+ ioTPrinter.println(Constants.TARGET_TABLE_EMPTY_MSG);
+ System.exit(1);
+ }
+ }
+
+ private void checkDatabase() {
+ Set<String> databases = new HashSet<>();
+ SessionDataSet sessionDataSet = null;
+ try (ITableSession session = sessionPool.getSession()) {
+ sessionDataSet =
session.executeQueryStatement(Constants.EXPORT_SCHEMA_TABLES_SHOW_DATABASES);
+ while (sessionDataSet.hasNext()) {
+ RowRecord rowRecord = sessionDataSet.next();
+ databases.add(rowRecord.getField(0).getStringValue());
+ }
+ } catch (Exception e) {
+ ioTPrinter.println(Constants.INSERT_SQL_MEET_ERROR_MSG + e.getMessage());
+ System.exit(1);
} finally {
if (ObjectUtils.isNotEmpty(sessionDataSet)) {
try {
sessionDataSet.close();
- } catch (Exception e) {
+ } catch (IoTDBConnectionException | StatementExecutionException e) {
+ ;
}
}
}
+ if (!databases.contains(database)) {
+
ioTPrinter.println(String.format(Constants.TARGET_DATABASE_NOT_EXIST_MSG,
database));
+ System.exit(1);
+ }
}
- private static void checkDataBaseAndParseTablesBySelectSchema(SessionDataSet
sessionDataSet)
+ private static void parseTablesBySelectSchema(String sql)
throws StatementExecutionException, IoTDBConnectionException {
- Set<String> databases = new HashSet<>();
+ SessionDataSet sessionDataSet = null;
HashMap<String, String> tables = new HashMap<>();
- while (sessionDataSet.hasNext()) {
- RowRecord rowRecord = sessionDataSet.next();
- databases.add(rowRecord.getField(0).getStringValue());
- String comment = rowRecord.getField(4).getStringValue();
- tables.putIfAbsent(
- rowRecord.getField(1).getStringValue(), comment.equals("null") ?
null : comment);
- }
- if (!databases.contains(database)) {
-
ioTPrinter.println(String.format(Constants.TARGET_DATABASE_NOT_EXIST_MSG,
database));
- System.exit(1);
+ try (ITableSession session = sessionPool.getSession()) {
+ sessionDataSet = session.executeQueryStatement(sql);
+ while (sessionDataSet.hasNext()) {
+ RowRecord rowRecord = sessionDataSet.next();
+ String comment = rowRecord.getField(4).getStringValue();
+ tables.putIfAbsent(
+ rowRecord.getField(1).getStringValue(), comment.equals("null") ?
null : comment);
+ }
+ } catch (Exception e) {
+ throw e;
+ } finally {
+ if (ObjectUtils.isNotEmpty(sessionDataSet)) {
+ try {
+ sessionDataSet.close();
+ } catch (IoTDBConnectionException | StatementExecutionException e) {
+ ;
+ }
+ }
}
if (StringUtils.isNotBlank(table)) {
if (!tables.containsKey(table)) {
@@ -115,14 +141,28 @@ public class ExportSchemaTable extends
AbstractExportSchema {
}
}
- private static void checkDataBaseAndParseTablesByShowSchema(SessionDataSet
sessionDataSet)
+ private static void parseTablesByShowSchema(String sql)
throws StatementExecutionException, IoTDBConnectionException {
+ SessionDataSet sessionDataSet = null;
HashMap<String, String> tables = new HashMap<>();
- while (sessionDataSet.hasNext()) {
- RowRecord rowRecord = sessionDataSet.next();
- String comment = rowRecord.getField(3).getStringValue();
- tables.putIfAbsent(
- rowRecord.getField(0).getStringValue(), comment.equals("null") ?
null : comment);
+ try (ITableSession session = sessionPool.getSession()) {
+ sessionDataSet = session.executeQueryStatement(sql);
+ while (sessionDataSet.hasNext()) {
+ RowRecord rowRecord = sessionDataSet.next();
+ String comment = rowRecord.getField(3).getStringValue();
+ tables.putIfAbsent(
+ rowRecord.getField(0).getStringValue(), comment.equals("null") ?
null : comment);
+ }
+ } catch (Exception e) {
+ throw e;
+ } finally {
+ if (ObjectUtils.isNotEmpty(sessionDataSet)) {
+ try {
+ sessionDataSet.close();
+ } catch (IoTDBConnectionException | StatementExecutionException e) {
+ ;
+ }
+ }
}
if (MapUtils.isNotEmpty(tables)) {
if (!tables.containsKey(table)) {