From e40bf35a37171dd88bf9ec4155fb2f82412b09f1 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 11 Jun 2021 11:38:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20sql=20=E6=95=B0=E6=8D=AE=E9=9B=86=20?= =?UTF-8?q?=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dataset/ExtractDataService.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index df1866bcbd..a2507458bf 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -154,17 +154,16 @@ public class ExtractDataService { } DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog(); UpdateType updateType = UpdateType.valueOf(type); - Datasource datasource = new Datasource(); if(context != null){ datasetTable.setQrtzInstance(context.getFireInstanceId()); datasetTableMapper.updateByPrimaryKeySelective(datasetTable); } + Datasource datasource = new Datasource(); if (StringUtils.isNotEmpty(datasetTable.getDataSourceId())) { datasource = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId()); } else { datasource.setType(datasetTable.getType()); } - List datasetTableFields = dataSetTableFieldsService.list(DatasetTableField.builder().tableId(datasetTable.getId()).build()); datasetTableFields.sort((o1, o2) -> { if (o1.getColumnIndex() == null) { @@ -192,7 +191,11 @@ public class ExtractDataService { createDorisTable(DorisTableUtils.dorisName(datasetTableId), dorisTablColumnSql); createDorisTable(DorisTableUtils.dorisTmpName(DorisTableUtils.dorisName(datasetTableId)), dorisTablColumnSql); generateTransFile("all_scope", datasetTable, datasource, datasetTableFields, null); - generateJobFile("all_scope", datasetTable, String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()))); + if(datasetTable.getType().equalsIgnoreCase("sql")){ + generateJobFile("all_scope", datasetTable, String.join(",", datasetTableFields.stream().map(DatasetTableField::getDataeaseName).collect(Collectors.toList()))); + }else { + generateJobFile("all_scope", datasetTable, fetchSqlField(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasource)); + } extractData(datasetTable, "all_scope"); replaceTable(DorisTableUtils.dorisName(datasetTableId)); saveSucessLog(datasetTableTaskLog); @@ -592,9 +595,13 @@ public class ExtractDataService { dataMeta.addExtraOption("MYSQL","characterEncoding", "UTF-8"); transMeta.addDatabase(dataMeta); if (extractType.equalsIgnoreCase("all_scope")) { - String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); - QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType()); - selectSQL = qp.createQuerySQL(tableName, datasetTableFields); + if(datasetTable.getType().equalsIgnoreCase("sql")){ + selectSQL = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(); + }else { + String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); + QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType()); + selectSQL = qp.createQuerySQL(tableName, datasetTableFields); + } } inputStep = inputStep(transMeta, selectSQL); udjcStep = udjc(datasetTableFields, false); @@ -604,9 +611,13 @@ public class ExtractDataService { dataMeta = new DatabaseMeta("db", "MSSQLNATIVE", "Native", sqlServerConfigration.getHost(), sqlServerConfigration.getDataBase(), sqlServerConfigration.getPort().toString(), sqlServerConfigration.getUsername(), sqlServerConfigration.getPassword()); transMeta.addDatabase(dataMeta); if (extractType.equalsIgnoreCase("all_scope")) { - String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); - QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType()); - selectSQL = qp.createQuerySQL(tableName, datasetTableFields); + if(datasetTable.getType().equalsIgnoreCase("sql")){ + selectSQL = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(); + }else { + String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); + QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType()); + selectSQL = qp.createQuerySQL(tableName, datasetTableFields); + } } inputStep = inputStep(transMeta, selectSQL); udjcStep = udjc(datasetTableFields, false);