import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mysql.cj.util.StringUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
public class IndbSeo{
//前期准备:需自己导入数据库jar包和commons-io-2.8.0.jar包
//数据库配置
final String driver_class_name="com.mysql.jdbc.Driver";
final String url="jdbc:mysql://ip:端口/数据库?useUnicode=true&characterEncoding=utf8&useSSL=false";
final String username="用户";
final String password="密码";
//表名,需自己先在数据库中建好
final String table="test";
//数组中元素代表每个字段(顺序要对),有主键将下面的flag改为1
String [] a=new String[]{"T0","T1","T2","T3","T4"};
//文件绝对路径
final static String fileName="";
//flag:1代表加主键自增长,0代表无主键(有主键将flag改为1)
static int flag=1;
//主键自增长,无需修改
static int i=1;
public static void main(String[] args) {
IndbSeo rcf = new IndbSeo();
rcf.readTxtFileByFileUtils(fileName);
}
int idx;
Connection conn = null;
PreparedStatement pstmt = null;
// 使用commons-io.jar包的FileUtils的类进行读取
public void readTxtFileByFileUtils(String fileName) {
File file = new File(fileName);
//判断文件是否存在
if(file.isFile() && file.exists()) {
dbConnection();
try {
LineIterator lineIterator = FileUtils.lineIterator(file, "GB2312");
while (lineIterator.hasNext()) {
String line = lineIterator.nextLine();
// 行数据转换成数组
String[] custArray = line.split("\\|");
insertCustInfo(custArray,a);
i++;
Thread.sleep(2);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
dbDisConnection();
}
}else{
System.out.println("系统找不到指定的文件,请查看文件路径!");
}
}
// 插入到数据库中
public void insertCustInfo(String[] strArray,String [] a) {
try {
StringBuffer sqlBf = new StringBuffer();
sqlBf.setLength(0);
/*避免重复输入INSERT IGNORE INTO
先删除再输入REPLACE INTO
正常输入INSERT INTO
*/
sqlBf.append("INSERT INTO "+table+"(");
for (int i=0;i<a.length;i++){
if (!StringUtils.isNullOrEmpty(a[i])){
sqlBf.append(i<a.length-1 ? a[i]+",":a[i]+")");
}
}
sqlBf.append(" VALUES( ");
for (int i=0;i<a.length;i++){
if (!StringUtils.isNullOrEmpty(a[i])){
sqlBf.append(i<a.length-1 ? " ?, " : " ?) ");
}
}
pstmt = conn.prepareStatement(sqlBf.toString());
idx = 1;
pstmt.clearParameters();
if (flag==1){
pstmt.setString(idx++, i+"");
for (int i=0;i<a.length-1;i++){
if (!StringUtils.isNullOrEmpty(a[i])){
pstmt.setString(idx++, strArray[i]);
}
}
}else {
for (int i=0;i<a.length;i++){
if (!StringUtils.isNullOrEmpty(a[i])){
pstmt.setString(idx++, strArray[i]);
}
}}
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
// 连接数据库
public Connection dbConnection() {
try {
Class.forName(driver_class_name);
conn = DriverManager.getConnection(url, username, password);
System.out.println("连接数据库成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// 关闭数据库
public void dbDisConnection() {
if (conn != null) {
try {
conn.close();
System.out.println("关闭数据库成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}