在开发和管理MySQL数据库的时候,workbench可以直接从CSV文件中导入数据到MySQL数据库,也可以直接从MySQL数据库中导出数据到CSV文件。但workbench毕竟是手动的,有时候需要解放双手,所以写了一个Java程序,让程序自动从MySQL数据库中查询我们需要的数据,并存到指定目录的CSV文件。

现在假设要查询MySQL用户为"Dennis",密码为"123456",数据库为"myDatabase"中的"user"表中所有记录,并将查询存到D盘根目录下的"user.csv"文件中。

SQL语句

SELECT 
into outfile 'D:/user.csv' 
fields terminated by ',' 
lines terminated by '\r\n';

into outfile ‘D:/user.csv’ :为指定输出文件路径
fields terminated by ‘,’ :指定字段之间分割
lines terminated by ‘\r\n’ :指定行之间的分割

Java连接MySQL

使用JDBC连接MySQL的时候需要导入一个依赖:mysql-connector-java-5.1.39-bin.jar
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class queryMysqlToCSV{
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost:3306/dennis?characterEncoding=utf8&useSSL=false";
    static final String USER = "Dennis";
    static final String PASS = "123456";
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String SQL = null;
        try {
            //装载驱动
            Class.forName(JDBC_DRIVER);
            //创建连接
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            //执行语句
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();
            //关闭连接
        }catch(SQLException se) {
            se.printStackTrace();
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs!=null)
                    rs.close();
                if(ps!=null)
                    ps.close();
                if(conn!=null)
                    conn.close();
            }catch(SQLException se) {
                se.printStackTrace();

在Java中执行SQL语句

package mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class mysqlConnect {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost:3306/dennis?characterEncoding=utf8&useSSL=false";
    static final String USER = "Dennis";
    static final String PASS = "123456";
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String SQL = null;
        try {
            //装载驱动
            Class.forName(JDBC_DRIVER);
            //创建连接
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            //执行语句
            SQL = "SELECT \r\n" + 
                    "   *\r\n" + 
                    "FROM \r\n" + 
                    "   user\r\n" + 
                    "into outfile 'D:/user.csv' " +
                    "fields terminated by ',' " +
                    "lines terminated by '\\r\\n'";
            ps = conn.prepareStatement(SQL);
            rs = ps.executeQuery();
            //关闭连接
        }catch(SQLException se) {
            se.printStackTrace();
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs!=null)
                    rs.close();
                if(ps!=null)
                    ps.close();
                if(conn!=null)
                    conn.close();
            }catch(SQLException se) {
                se.printStackTrace();

执行代码会在我们指定的D盘根目录下生成一个user.csv文件。

使用mysql查询结果输出在标准输出流中,可以直接重定向到一个文件中。列的分隔是tab符,列分隔是LF符。如果想化为cvs格式,可以通过下列Java程序进行码。 public class TsvToCsvMain { public static void main(String[] args) throws Exception { // String input = "F:\\ttda... 注册CSDN快六个月了,之前一直是看园子里的文章,或者碰到问题时,进来查点资料,今天终于决定写一篇自己在园子里的blog。好吧,鉴于水平太菜,就只记录过程,其中原理啥的并不是很明晰,所以此blog只在记录,莫BS哈。神马是CSV文件呢,看起来和excel文件很像,具体有神马不同,见这位圆友的blog哈,http://blog.csdn.net/luweifeng1983/article/detai... 一、导入步骤 1.打开MySQL操作软件 我用的是MySQL workbench,建立一个数据库用来存放数据,新建空表格(表格的列数要和导入数据的相同),用来导入数据,我这里需要导入3个表格,所以就建了3各表: create database if not exists a mysql -A service_db -h your_host -utest -ptest mysql> select * from t_apps where created>'2012-07-02 00:00:00' in... import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.nio.charset.Charset; import java.util.Collection... 可以借助SELECT…INTO OUTFILE语句来完成。我们将在以下示例的帮助下进行说明-示例假设我们从表'Student_info'获得以下数据-mysql>Select*fromStudent_info;+------+---------+------------+------------+|id|Name|Address|Subject|... package com.go;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statem... 使用java把10G文本导入mysql(并码为csv) 第一次遇到10G的文本需要导入,所以一开始想直接按行导入,结果读取了txt发现有1亿8千万行,算下来要导入半个月了,属于千万级数据,不建议逐行操作。最后发现mysql有LOAD DATA LOCAL INFILE语句可以非常快速的导入txt文档,10G的文档经过测试只用2个小时。本次导入分为三步: (1)把10G文件切割成100个100M的... 2006年7月7日最近的工作常常要和XML格式的文档或字符串打交道,发现用JDOM来做真是方便。可以实现XML应用程序的快速开发。在 JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。因为 JDOM 对象就是像 Document、Element 和 Attribute 这些类的直接实例,因此创...