2016-01-24 120 views
1

,所以我发现在互联网上的代码,基本上是据说它可以做的是备份从数据库中的所有表,我的问题是在这条线:导出数据库,用java csv文件

res = st.executeQuery("select * from xcms." + tableName); 

我得到以下消除异常:SQLException信息

什么是xcms。代表?还有什么我可以放在这里?

res = st.executeQuery("select * from " + tableName); 

btw如果我删除xcms。并把它像这样^,我只能保存第一个表中没有的所有表,THX

的源代码网页:

https://gauravmutreja.wordpress.com/2011/10/13/exporting-your-database-to-csv-file-in-java/#comment-210

public class ExporttoCSV { 
public static void main(String[] args) { 
    Connection con = null; 
    String url = "jdbc:mysql://localhost:3306/"; 
    String db = "gg"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String user = "root"; 
    String pass = ""; 
    FileWriter fw; 

    try { 
     Class.forName(driver); 
     con = DriverManager.getConnection(url + db, user, pass); 
     Statement st = con.createStatement(); 
     ResultSet res = st.executeQuery("SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'gg'"); 
     List<String> tableNameList = new ArrayList<String>(); 
     while (res.next()) { 
      tableNameList.add(res.getString(1)); 
     } 
     String filename = "C:\\Users\\Angel Silva\\Documents"; 
     for (String tableName : tableNameList) { 
      int k = 0; 
      int j = 1; 
      System.out.println(tableName); 
      List<String> columnsNameList = new ArrayList<String>(); 
      res = st.executeQuery("select * from " + tableName); 

      int columnCount = getColumnCount(res); 

      try { 
       fw = new FileWriter("C:\\Users\\Angel Silva\\Documents\\popo1121.csv"); 

       for (int i = 1; i <= columnCount; i++) { 
        fw.append(res.getMetaData().getColumnName(i)); 
        fw.append(","); 

       } 
       fw.append(System.getProperty("line.separator")); 

       while (res.next()) { 
        for (int i = 1; i <= columnCount; i++) { 
         if (res.getObject(i) != null) { 
          String data = res.getObject(i).toString(); 
          fw.append(data); 
          fw.append(","); 
         } else { 
          String data = "null"; 
          fw.append(data); 
          fw.append(","); 
         } 
        } 
        fw.append(System.getProperty("line.separator")); 
       } 
       fw.flush(); 
       fw.close(); 
      } catch (IOException ioe) { 
       ioe.printStackTrace(); 
      } 
     } 
     con.close(); 
    } catch (ClassNotFoundException cnfe) { 
     System.err.println("Could not load JDBC driver"); 
     cnfe.printStackTrace(); 
    }catch (SQLException sqle) {System.err.println("SQLException information");} 
} 

public static int getRowCount(ResultSet res) throws SQLException { 
    res.last(); 
    int numberOfRows = res.getRow(); 
    res.beforeFirst(); 
    return numberOfRows; 
} 
public static int getColumnCount(ResultSet res) throws SQLException { 
    return res.getMetaData().getColumnCount(); 
} 

}

回答

0

一个简单的方法来导出Mysql表格到文件。 SELECT INTO OUTFILE它将生成CSV文件。

String filename = "d:/outfile.csv"; 
String tablename = "abc"; 
stmt.executeQuery("SELECT * INTO OUTFILE \"" + filename + "\" FROM " + tablename); 
+0

你能给我更多的信息,如何直接保存为csv?谢谢 –