首页 / 浏览问题 / 组件GIS / 问题详情
java 空间数据库中已经有表存在了,我想通过excel 添加数据,怎么追加
2EXP 2020年09月08日
String path = "D:\\hsp.shp";
        Workspace workspace = new Workspace();
        DatasourceConnectionInfo info = new DatasourceConnectionInfo();
        info.setEngineType(EngineType.MYSQL);
        info.setServer("106.75.229.99:3307");
        info.setDatabase("FEIDONG2020CS");
        info.setUser("root");
        info.setPassword("wavenet@31269900");
        info.setAlias("FEIDONG2020CS");
        // 打开数据源
        Datasource datasource = workspace.getDatasources().open(info);
        if (datasource == null) {
            System.out.println("打开数据源失败");
        } else {
            System.out.println("数据源打开成功!");
            //创建临时数据集
            //Datasets temp_shape = datasource.getDatasets();
            Dataset datasets  = datasource.open(info, "node");

            String name = datasets.getName();
            //boolean flag = datasets.delete("temp_shape");
            //String name = datasets.getAvailableDatasetName("temp_shape");
            // 设置矢量数据集的信息
//            DatasetVectorInfo datasetVectorInfo = new DatasetVectorInfo();
//            datasetVectorInfo.setType(DatasetType.REGION);
//            datasetVectorInfo.setEncodeType(EncodeType.NONE);
//            datasetVectorInfo.setFileCache(true);
//            datasetVectorInfo.setName("temp_shape");
           // System.out.println("临时数据集的信息为:" + datasetVectorInfo.toString());
           // DatasetVector dv_temp = datasets.create(datasetVectorInfo);
            //dv_temp.close();
            //导入到指定数据源的数据集中
            ImportSettingSHP importSettingSHP = new ImportSettingSHP();

            importSettingSHP.setAttributeIgnored(false);
            //设置当同名数据集存在时导入的模式,如果存在名字冲突,则覆盖
            //importSettingSHP.setImportMode(ImportMode.OVERWRITE);
            //设置需要导入的数据路径信息
            importSettingSHP.setSourceFilePath(path);
            //设置需要导入的数据编码类型,因为有中文字段,所以用ASCII编码
            importSettingSHP.setSourceFileCharset(Charset.ANSI);
            //设置要导入的目标数据源
            importSettingSHP.setTargetDatasource(datasource);
            //设置目标数据集名称
            importSettingSHP.setTargetDatasetName("temp_shape");
            DataImport importer = new DataImport();
            importer.getImportSettings().add(importSettingSHP);

            ImportResult result = importer.run();
            if (result.getFailedSettings().length == 0) {
                System.out.println("导入成功!");
            }
            // 释放资源
            //datasetVectorInfo.dispose();
            info.dispose();
            workspace.dispose();

        }

这是现有的代码每次我进行导入我把  importSettingSHP.setTargetDatasetName("temp_shape"); 改成数据库有的 还是会新增 

Dataset datasets  = datasource.open(info, "temp_shape"); 还有用这个方法一直获得为空

1个回答

你好,如果您已经导入数据集成功,追加到已有的数据集中, 您可以用DatasetVector.append(Recordset recordset)。将记录追加进去;

2,842EXP 2020年09月08日
ImportSettingCSV importSettingCSV = new ImportSettingCSV();
//importSettingSHP.setAttributeIgnored(false);
//设置当同名数据集存在时导入的模式,如果存在名字冲突,则覆盖
importSettingCSV.setImportMode(ImportMode.APPEND);
//设置需要导入的数据路径信息
importSettingCSV.setSourceFilePath(path);
//设置需要导入的数据编码类型,因为有中文字段,所以用ASCII编码
importSettingCSV.setSourceFileCharset(Charset.ANSI);
//设置要导入的目标数据源
importSettingCSV.setTargetDatasource(datasource);
//设置目标数据集名称
importSettingCSV.setTargetDatasetName("tMonitor_Flow_R");
boolean firstRowIsField = importSettingCSV.getFirstRowIsField();
boolean importEmptyDataset = importSettingCSV.isImportEmptyDataset();
DataImport importer = new DataImport();
importer.getImportSettings().add(importSettingCSV);

我才用了 这个 但是在进行数据导入的时候 设置为重写就可以进行数据的导入

但是选择 APPEND追加就会没有反应 不报错 数据也没有进行导入

DatasetVector.append(Recordset recordset) 这个方法我也试了 

DatasetVector tMonitorFlowR= (DatasetVector) datasource.getDatasets().get("tMonitor_Flow_R");  得到的 tMonitorFlowR是一个null ,tMonitor_Flow_R 这个表是存在的在我的库中de
...