解决方案 »

  1.   

    首先,你说的这一批数据之后,肯定能明确各列的数据类型。
    然后,你肯定是使用jdbc的批处理去处理。
    在批处理,输入参数的时候对可能为空的 字符串列,或者可能为空的 number列进行判定。
    字符串列就改输入“”,number列就改输入0。
      

  2.   

    可以写个拼sql语句的方法    public static <E> String getInsertSql(String[] tables, E[] args) {
            StringBuilder sqlSub1 = new StringBuilder();
            StringBuilder sqlSub2 = new StringBuilder();
            for (int i=0; i<tables.length; i++) {
                sqlSub1.append(args[i] == null ? "" : tables[i] + ",");
                sqlSub2.append(args[i] == null ? "" : "?,");
            }
            sqlSub1 = sqlSub1.delete(sqlSub1.length() - 1, sqlSub1.length());
            sqlSub2 = sqlSub2.delete(sqlSub2.length() - 1, sqlSub2.length());
            return "insert into test (" + sqlSub1 + ") values (" + sqlSub2 + ")";
        }
        
        public static void main(String[] args) {
            System.out.println(getInsertSql(new String[]{"a","b","c","d"}, new Integer[]{1,2,3,null}));
        }
      

  3.   

        public static <E> String getInsertSql(String tableName, String[] fields, E[] args) {
            StringBuilder sqlSub1 = new StringBuilder();
            StringBuilder sqlSub2 = new StringBuilder();
            for (int i=0; i<fields.length; i++) {
                sqlSub1.append(args[i] == null ? "" : fields[i] + ",");
                sqlSub2.append(args[i] == null ? "" : "?,");
            }
            sqlSub1.delete(sqlSub1.length() - 1, sqlSub1.length());
            sqlSub2.delete(sqlSub2.length() - 1, sqlSub2.length());
            return "insert into" + tableName + "(" + sqlSub1 + ") values (" + sqlSub2 + ")";
        }上面那个小改了一下
      

  4.   

    使用预处理            String a = "a", b = null, c = "c", d = "d", e = null;
                PreparedStatement stm = conn.prepareStatement("insert into tb_table (a, b, c, d, e) values (?, ?, ?, ?, ?)");
                stm.setString(1, a);
                if (b == null)
                    stm.setNull(2, Types.INTEGER);
                else
                    stm.setInt(2, Integer.parseInt(b));
                stm.setString(3, c);
                stm.setString(4, d);
                if (e == null)
                    stm.setNull(5, Types.FLOAT);
                else
                    stm.setFloat(5, Float.parseFloat(e));
                stm.execute();
                stm.close();