如何根据表名获取表数据的插入sql

如何根据表名获取表数据的插入sql

声名成员变量

private  Connection conn = null;
    private  Statement sm = null;
    private  String insert = "INSERT INTO";//插入sql
    private  String values = "VALUES";//values关键字
    private  String select = "SELECT * FROM ";//查询sql
    //private static List<String> tableList = new ArrayList<String>();//全局存放表名列表
    private  List<String> selectList = new ArrayList<String>();//全局存查询列表
    private  List<String> insertList = new ArrayList<String>();//全局存放insertsql文件的数据
    private  String filePath = "E://insertSql";//绝对路径 导出数据的文件
    private  String fileName = "";//文件名称

生成插入文件

public void executeSelectSQLFile(List<String> tableList) throws Exception {
        //创建连接
        connectSQL();
        //创建查询语句
        selectSQL(tableList);
        //执行sql并拼装
        executeSQL(conn, sm, selectList, tableList);
        //创建文件
        createFile();//创建文件
    }
private  ResultSet getColumnNameAndColumeValue(Statement sm,
                                                         List selectList, List ListTable, ResultSet rs) throws SQLException {
        for (int j = 0; j < selectList.size(); j++) {
            String sql = String.valueOf(selectList.get(j));
            rs = sm.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            while (rs.next()) {
                StringBuffer ColumnName = new StringBuffer();
                StringBuffer ColumnValue = new StringBuffer();
                for (int i = 1; i <= columnCount; i++) {
                    String value = rs.getString(i);
                    if (i == columnCount) {
                        ColumnName.append(rsmd.getColumnName(i));
                        if (Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
                                || Types.LONGVARCHAR == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append("'").append(value).append("'");
                            }
                        } else if (Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
                                || Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
                                || Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
                                || Types.DECIMAL == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append(value);
                            }
                        } else if (Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
                                || Types.TIMESTAMP == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append("timestamp'").append(value).append("'");
                            }
                        } else {
                            if (value == null) {
                                ColumnValue.append("null");
                            } else {
                                ColumnValue.append(value);
                            }
                        }
                    } else {
                        ColumnName.append(rsmd.getColumnName(i) + ",");
                        if (Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
                                || Types.LONGVARCHAR == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append("'").append(value).append("',");
                            }
                        } else if (Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
                                || Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
                                || Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
                                || Types.DECIMAL == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append(value).append(",");
                            }
                        } else if (Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
                                || Types.TIMESTAMP == rsmd.getColumnType(i)) {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append("timestamp'").append(value).append("',");
                            }
                        } else {
                            if (value == null) {
                                ColumnValue.append("null,");
                            } else {
                                ColumnValue.append(value).append(",");
                            }
                        }
                    }
                }
                //System.out.println(ColumnName.toString());
                //System.out.println(ColumnValue.toString());
                insertSQL(ListTable.get(j).toString(), ColumnName, ColumnValue);
            }
        }
        return rs;
    }

    private   void insertSQL(String TableName, StringBuffer ColumnName,
                                  StringBuffer ColumnValue) {
        StringBuffer insertSQL = new StringBuffer();
        insertSQL.append(insert).append(" ").append(TableName).append("(").append(ColumnName.toString())
                .append(")").append(values).append("(").append(ColumnValue.toString()).append(");");
        insertList.add(insertSQL.toString());
        //System.out.println(insertSQL.toString());
    }


    /**
     * 连接数据库
     */
    private  void connectSQL() {
        try {
            conn = getConnection();
            sm = conn.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 生成selectList
     * @throws Exception
     */
    private   List<String> selectSQL(List<String> tableList) throws Exception {

        if(tableList.size()>0){
            for(String tableName: tableList){
                StringBuffer selectSQL = new StringBuffer();
                selectSQL.append(select).append(tableName);
                selectList.add(selectSQL.toString());
            }
        }
        return selectList;
    }

    public String getFileName(){
        return fileName;
    }
    /**
     * 创建insert文件
     */
    private  void createFile() {
        File file=new File(filePath);
        if(!file.exists()){//如果文件夹不存在
            file.mkdir();//创建文件夹
        }
        fileName = UUID.randomUUID().toString().replace("-", "").substring(0,5) + ".txt";
        File finalfile = new File(filePath+"//"+fileName);
        if (!file.exists()) {
            try {
                finalfile.createNewFile();
            } catch (IOException e) {
                System.out.println("创建文件名失败!!");
                e.printStackTrace();
            }
        }
        FileWriter fw = null;
        BufferedWriter bw = null;
        try {
            fw = new FileWriter(finalfile);
            bw = new BufferedWriter(fw);
            if (insertList.size() > 0) {
                for (int i = 0; i < insertList.size(); i++) {
                    bw.append(insertList.get(i));
                    bw.append("\r\n");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bw.close();
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

类需为多例模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值