private boolean execLoadFeatures(VectorMap queryParam, StringBuffer respBody, DBAccess dbAccess) throws Exception {
        boolean success = true;
        int clntIdx = queryParam.qpIndexOfKeyNoCase("clnt");
        String clientName = (String) queryParam.getVal(clntIdx);
        //System.out.println( "clnt = " + clientName );

        int filePathIdx = queryParam.qpIndexOfKeyNoCase("path");
        if (filePathIdx == -1) {
            WebServer.win.log.error("Parameter path is missing");
            return false;
        }
        String filePath = (String) queryParam.getVal(filePathIdx);
        //System.out.println( "filePath = " + filePath );

        int csIdx = queryParam.qpIndexOfKeyNoCase("cs");
        if (csIdx == -1) {
            WebServer.win.log.error("Parameter cs is missing");
            return false;
        }
        String cs = (String) queryParam.getVal(csIdx);
        //System.out.println( "cs = " + cs );

        int ftrColIdx = queryParam.qpIndexOfKeyNoCase("ftrcol");
        int ftrCol;
        if (ftrColIdx == -1) {
            WebServer.win.log.debug("Parameter ftrcol is missing, assuming it is 0");
            ftrCol = 0;
        }
        ftrCol = Integer.parseInt((String) queryParam.getVal(ftrColIdx));
        //System.out.println( "ftrCol = " + ftrCol );

        int defValueIdx = queryParam.qpIndexOfKeyNoCase("defvalue");
        String defValue;
        if (ftrColIdx == -1) {
            WebServer.win.log.debug("Parameter defvalue is missing, assuming it is 0.0");
            defValue = "0.0";
        } else {
            defValue = (String) queryParam.getVal(defValueIdx);
        }

        int prefixIdx = queryParam.qpIndexOfKeyNoCase("pref");
        String prefix;
        if (prefixIdx == -1) {
            WebServer.win.log.debug("Parameter prefixIdx is missing, assuming it is NULL");
            prefix = "";
        } else {
            prefix = (String) queryParam.getVal(prefixIdx);
        }
        //System.out.println( "defValue = " + defValue );

        File csvFile = new File(filePath);
        if (csvFile.exists() == false || csvFile.isDirectory() == true) {
            WebServer.win.log.error("The specified file does not exists or it is a directory");
            return false;
        }

        BufferedReader input = new BufferedReader(new FileReader(csvFile));
        String line;
        int rows = 0;
        Connection con = dbAccess.getConnection();
        Statement stmt = con.createStatement();
        while ((line = input.readLine()) != null) {
            String tokens[] = line.split(cs);
            String ftr = prefix + tokens[ftrCol];
            //PFeature feature = new PFeature( ftr, defValue, defValue );
            String sql = "REPLACE INTO " + DBAccess.FEATURE_TABLE + " " + "(uf_feature, uf_defvalue, uf_numdefvalue, " + DBAccess.FIELD_PSCLIENT + " ) VALUES ('" + ftr + "', '" + defValue + "', " + defValue + ",'" + clientName + "')";
            //rows += dbAccess.insertNewFeature( feature , clientName);
            rows += stmt.executeUpdate(sql);
        }
        input.close();
        stmt.close();

        respBody.append(DBAccess.xmlHeader("/resp_xsl/rows.xsl"));
        respBody.append("<result>\n");
        respBody.append("<row><num_of_rows>").append(rows).append("</num_of_rows></row>\n");
        respBody.append("</result>");
        return success;
    }