Importando dados de um Txt ou arquivos CSV para tabelas de banco de dados MySQL

Aprenda nesta dica a importa dados de arquivos txt e csv para banco de dados.

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

Artigos relacionados