实现思路:
实现Java读取TXT文件中的内容并存到内存,将内存中的数据和mysql 数据库里面某张表数据的字段做一个比较,如果比较内存中的数据在mysql 里存在则不做处理,如果不存在则将该数据插入mysql数据库中
步骤1、读取文本数据 给一个string 返回值
步骤2、查询mysql 表中数据 给一个String 返回值
步骤3 、内存中文本数据和读取的mysql 数据做比较
/** * 实现读取文件信息 * * @param fileName * @return */ public static String readFileByLines(String fileName) { String result = ""; file = new File(fileName); String tempString = null; BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); while ((tempString = reader.readLine()) != null) { result += tempString + " "; } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } return result; }
public static String url = null; public static String username = null; public static String password = null; public static Connection conn; public static Statement stmt; public static ResultSet rs; public static String fileName; public static String tempString = null; public static String PATH = "/dbconfig.properties"; private static Properties properties; static { try { InputStream is = DBlUtils.class.getResourceAsStream(PATH); properties = new Properties(); properties.load(is); url = properties.getProperty("jdbc.url"); username = properties.getProperty("jdbc.username"); password = properties.getProperty("jdbc.password"); fileName = properties.getProperty("fileName"); System.out.println("fileName:" + fileName); if (is != null) is.close(); } catch (IOException e) { e.printStackTrace(); } }
查询mysql 数据库数据
/** * 查询mysql 数据库数据,并获得内容 * * @param sql */ public static String queryDatas(String sql) { String queryDatas = null; try { conn = DriverManager.getConnection(url, username, password); conn.setAutoCommit(false); stmt = conn.prepareStatement("load data local infile '' " + "into table loadtest fields terminated by ','"); StringBuilder sb = new StringBuilder(); InputStream is = new ByteArrayInputStream(sb.toString().getBytes()); ((com.mysql.jdbc.Statement) stmt).setLocalInfileInputStream(is); ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); // 输出列名 for (int i = 1; i <= columnCount; i++) { if (rsmd.getColumnName(i).startsWith("content")) { System.out.print(rsmd.getColumnName(i)); } } System.out.println(); // 输出mysql数据 while (rs.next()) { queryDatas = rs.getString(2); } } catch (Exception e) { e.printStackTrace(); } return queryDatas; }
文本读取的数据和mysql查询的数据进行比较: