用java将表从Postgres数据库(在服务器上)导出到csv文件(在本地)
我想将一个表从数据库导出到CSV文件 在我的本地机器上。现在,我可以连接到数据库并显示 控制台中包含System.out.println的所有元素。但我 要在csv文件中重定向这些元素。请帮忙用java将表从Postgres数据库(在服务器上)导出到csv文件(在本地),java,sql,postgresql,csv,Java,Sql,Postgresql,Csv,我想将一个表从数据库导出到CSV文件 在我的本地机器上。现在,我可以连接到数据库并显示 控制台中包含System.out.println的所有元素。但我 要在csv文件中重定向这些元素。请帮忙 //STEP 1. Import required packages import java.sql.*; public class ExportDataToCSV { // JDBC driver name and database URL static fi
//STEP 1. Import required packages
import java.sql.*;
public class ExportDataToCSV {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.postgresql.Driver";
static final String DB_URL = "jdbc:postgresql://[localhost]:54432/database";
// Database credentials
static final String USER = "login";
static final String PASS = "pwd";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("org.postgresql.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, age, first, last FROM table";
ResultSet rs = stmt.executeQuery(sql);
//STEP 5: Extract data from result set
while(rs.next()){
//Retrieve by column name
String id = rs.getString("id");
String age = rs.getString("age");
String first = rs.getString("first");
String last = rs.getString("age");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
//STEP 5: Clean-up environment
rs.close();
stmt.close();
conn.close(); }catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace(); }catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace(); }finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try }//end try }//end main }//end FirstExample
这取决于具体情况,但您可能需要编写一个web应用程序,该应用程序的网页响应包含.csv文件,内容类型响应标题为text/csv,但是,您可能需要编写一个web应用程序,其中包含一个包含.csv文件的响应和一个text/csv/p>的内容类型响应头的网页。使用PgJDBC的CopyManager,您可以从中获取,您可以为PgJDBC连接强制转换java.sql.Connection 如果使用连接池,则可能需要了解如何展开代理连接以获取真正的底层PgJDBC连接对象 CopyManager支持复制。。。到STDOUT,允许您将服务器生成的CSV数据流式传输到客户端应用程序。使用PgJDBC的CopyManager,您可以从中获得,您可以为PgJDBC连接强制转换java.sql.Connection 如果使用连接池,则可能需要了解如何展开代理连接以获取真正的底层PgJDBC连接对象
CopyManager支持复制。。。到STDOUT,允许您将服务器生成的CSV数据流式传输到客户端应用程序。以前有人问过这个问题:感谢您回答mwarren!但是这个答案允许您将表的内容复制到另一台服务器的tmp目录中。我想把它从服务器复制到我的本地机器上。这个问题以前有人问过:谢谢你回答mwarren!但是这个答案允许您将表的内容复制到另一台服务器的tmp目录中。我想把它从服务器复制到我的本地机器上。非常感谢!它起作用了!!正确的语句是:CopyManager cm=新的CopyManager连接conn;cm.copyOutCOPY使用分隔符“;”从noticeAdmin.inex_事务选择*到标准输出,新建BufferedWriternew FileWriterC:/export\u transaction.csv@卡兹曼:我建议改用CSV格式——它可以更好地处理字符串中嵌入的换行符之类的事情。非常感谢!它起作用了!!正确的语句是:CopyManager cm=新的CopyManager连接conn;cm.copyOutCOPY使用分隔符“;”从noticeAdmin.inex_事务选择*到标准输出,新建BufferedWriternew FileWriterC:/export\u transaction.csv@我建议Kazman改用CSV格式——它可以更好地处理字符串中嵌入的换行符之类的事情。