快速批量插入setLocalInfileInputStream的用法

来源:互联网 发布:淘宝pc端图片尺寸 编辑:程序博客网 时间:2024/06/05 06:19

Thanks for jeff rick's help!

Here is the article url:http://jeffrick.com/2010/03/23/bulk-insert-into-a-mysql-database/

import com.mysql.jdbc.Connection;import com.mysql.jdbc.Statement;import org.apache.commons.io.IOUtils;import java.io.InputStream;import java.lang.reflect.Method;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;public class DemoBulkInsert {    public void bulkInsert(Connection conn, Long personId, HashMap<String, String> hashOfNameValues) throws SQLException {            // First create a statement off the connection and turn off unique checks and key creation            Statement statement = (com.mysql.jdbc.Statement)conn.createStatement();            statement.execute("SET UNIQUE_CHECKS=0; ");            statement.execute("ALTER TABLE real_big_table DISABLE KEYS");            // Define the query we are going to execute            String statementText = "LOAD DATA LOCAL INFILE 'file.txt' " +                    "INTO TABLE real_big_table " +                    "(name, value) " +                    " SET owner_id = " + personId + ", " +                    " version = 0; ";            // Create StringBuilder to String that will become stream            StringBuilder builder = new StringBuilder();            // Iterate over map and create tab-text string            for (Map.Entry<String, String> entry : hashOfNameValues.entrySet()) {                builder.append(entry.getKey());                builder.append('\t');                builder.append(entry.getValue());                builder.append('\n');            }            // Create stream from String Builder            InputStream is = IOUtils.toInputStream(builder.toString());            // Setup our input stream as the source for the local infile            statement.setLocalInfileInputStream(is);            // Execute the load infile            statement.execute(statementText);            // Turn the checks back on            statement.execute("ALTER TABLE affinity ENABLE KEYS");            statement.execute("SET UNIQUE_CHECKS=1; ");    }}


 

原创粉丝点击