Java使用Postgresql的Copy功能大量数据保存数据库
在Java中使用PostgreSQL的COPY功能大量数据保存到数据库,可以通过JDBC的copyIn
方法实现。以下是一个简单的例子:
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class PostgresCopyExample {
public static void main(String[] args) {
// 数据库连接信息
String url = "jdbc:postgresql://hostname:port/database";
String username = "username";
String password = "password";
// 数据文件路径
String filePath = "/path/to/your/data.csv";
// 加载JDBC驱动
try {
Class.forName("org.postgresql.Driver");
// 建立数据库连接
try (Connection connection = DriverManager.getConnection(url, username, password);
// 创建Statement对象
Statement statement = connection.createStatement()) {
// 开启COPY模式
try (ResultSet resultSet = statement.executeQuery("COPY your_table FROM STDIN DELIMITER ',' CSV HEADER")) {
// 使用copyIn方法将文件数据复制到数据库
statement.getConnection().setAutoCommit(false);
try (java.sql.Clob clob = connection.createClob()) {
clob.setString(1, new FileReader(filePath));
resultSet.moveToInsertRow();
resultSet.updateClob("your_column", clob);
resultSet.insertRow();
connection.commit();
}
}
System.out.println("数据复制完成");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个例子中,你需要替换hostname:port/database
, username
, password
, /path/to/your/data.csv
, your_table
, 和 your_column
为你的实际数据库连接信息和表结构。这段代码假设数据文件是CSV格式,你可以根据实际情况调整COPY
命令中的DELIMITER
和CSV HEADER
选项。
评论已关闭