Mysql-connector-java-3.1.10 é um conector de JDBC para a base de dados MYSQL. O MYSQL fornece a utilidade Load Data Infile para importar os dados de arquivos csv, txt ou xls para tabelas de banco de dados.
O exemplo abaixo importa os dados de um arquivo .txt para uma tabela.
O arquivo temp.txt tem seus dados separados por tab:
"1 string" 100
"2 string" 102
"3 string" 104
"4 string" 106
testtable structure
CREATE TABLE testtable
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
text varchar(45) NOT NULL,
price integer not null);
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class automateImport
{
public static void main(String[] args)
{
DBase db = new DBase();
Connection conn =
db.connect("jdbc:mysql://localhost:3306/test","root","caspian");
db.importData(conn,args[0]);
}
}
class DBase
{
public DBase()
{
}
public Connection connect(String db_connect_str,
String db_userid, String db_password)
{
Connection conn;
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(db_connect_str,
db_userid, db_password);
}
catch(Exception e)
{
e.printStackTrace();
conn = null;
}
return conn;
}
public void importData(Connection conn,String filename)
{
Statement stmt;
String query;
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
query = "LOAD DATA INFILE '"+filename+
"' INTO TABLE testtable (text,price);";
stmt.executeUpdate(query);
}
catch(Exception e)
{
e.printStackTrace();
stmt = null;
}
}
};
Se você quiser importar arquivos CSV, você pode utilizar a seguinte query:
query = "LOAD DATA INFILE '"+filename+"' INTO TABLE testtable FIELDS
TERMINATED BY ',' (text,price)";