【问题标题】:How can i use correctly processbuilder with shp2pgsql如何正确使用带有 shp2pgsql 的 processbuilder
【发布时间】:2017-08-09 09:44:59
【问题描述】:

我做了很多关于使用 java 代码将 shapefile 导入和导出到 postgis 的研究。我尝试将 shp2pgsql 与 processBuilder 一起使用,但它对我不起作用。 当我运行代码时,它没有给我任何错误。

他是我一直在使用的代码:

   String userName="postgres";
   String path="A:\\DATA\\Provinces.shp";
   String table="test";
   String txtDB="test";
   String cmd =  " shp2pgsql –I –D -W \\LATIN1\\ "+path+" "+table+" | psql -  p 5432 "+txtDB+" "+ userName;

   String[] command = { "cmd","/c","C:\\Program   Files\\PostgreSQL\\9.2\\bin\\shp2pgsql.exe",cmd };

    ProcessBuilder probuilder = new ProcessBuilder(command);
    final Process process = probuilder.start();


    //Read out dir output
    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);

   //Wait to get exit value
    try {
        int exitValue = process.waitFor();
        System.out.println("\n\nExit Value is " + exitValue);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

【问题讨论】:

    标签: java sql postgresql postgis


    【解决方案1】:
        ProcessBuilder pb= new ProcessBuilder();
        pb.command("shp2pgsql ","<filepath>|psql -U postgres");
        Process p = pb.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
    
        String temp="";
        while ((line = reader.readLine()) != null)
        {
            temp=temp.concat(line);
            System.out.println("shp2pgsql: " + line);
        }
        if(!temp.isEmpty())
        {
            PreparedStatement preStmt=con.prepareStatement(temp);
            preStmt.executeUpdate();
            return true;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多