在Java開發(fā)中,我們常常需要將.sql文件中的數(shù)據(jù)批量插入到MySQL數(shù)據(jù)庫(kù)中。本文將介紹如何使用Java代碼實(shí)現(xiàn)該功能。
首先,我們需要連接MySQL數(shù)據(jù)庫(kù)??梢允褂肑DBC連接數(shù)據(jù)庫(kù),示例代碼如下:
Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
連接成功后,我們需要讀取.sql文件的內(nèi)容,可以使用InputStreamReader和BufferedReader讀取文件,示例代碼如下:
String sqlFilePath = "D:/data.sql"; InputStreamReader isr = new InputStreamReader(new FileInputStream(sqlFilePath), "UTF-8"); BufferedReader br = new BufferedReader(isr);
讀取文件后,我們需要解析文件中的SQL語(yǔ)句并執(zhí)行??梢允褂肧tatement或PreparedStatement對(duì)象執(zhí)行SQL語(yǔ)句,示例代碼如下:
String line = null; while ((line = br.readLine()) != null) { if (!line.startsWith("--")) { PreparedStatement ps = conn.prepareStatement(line); ps.execute(); ps.close(); } }
以上代碼將逐行讀取.sql文件,如果該行不是注釋行,則將該行作為SQL語(yǔ)句,使用PreparedStatement執(zhí)行。
最后,我們需要釋放資源,包括數(shù)據(jù)庫(kù)連接和文件流,示例代碼如下:
br.close(); isr.close(); conn.close();
完整代碼如下:
Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); String sqlFilePath = "D:/data.sql"; InputStreamReader isr = new InputStreamReader(new FileInputStream(sqlFilePath), "UTF-8"); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { if (!line.startsWith("--")) { PreparedStatement ps = conn.prepareStatement(line); ps.execute(); ps.close(); } } br.close(); isr.close(); conn.close();
使用以上代碼,我們可以輕松將.sql文件中的數(shù)據(jù)批量插入到MySQL數(shù)據(jù)庫(kù)中。