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; ");
}
}