Postgresql使用java JDBC导入数据的方法

1. maven依赖

如果使用jdk7或者jdk6,需要使用其他对应的maven依赖,以下依赖支持jdk8及以上的版本。如果使用错jdk,在使用时会出现错误。

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.23</version>
        </dependency>
2. 通过java的加载方式
  1. 通过jdbc执行insert语句不断导入数据。

    通过jdbc执行insert语句这种方式是最普通,适用于各种数据库不仅仅是postgresql,但是这种方式在数据量大的情况下,插入效率低。以下只是简单的例子,执行语句的方法。

    public static void main(String[] args) {
        Class.forName("org.postgresql.Driver");
        String url = "jdbc:postgresql://localhost:port/dbname?user=***e&password=***";
        Connection connection = DriverManager.getConnection(url);
        Statement statement = connection.createStatement();
        // PreparedStatement preparedStatement = connection.prepareStatement(); 也可以使用PreparedStatement
        statement.execute(sql);
        statement.close();
        connection.close();
    }
    
  2. 通过postgresql的客户端psql执行copy命令。

    此方式需要在运行主机安装psql。win10下不想安装服务端,可以在安装包里选择只安装Command Line Tools。安装后,在相应的目录里有psql的指令。linux下可以通过命令只安装客户端,具体方法百度可以搜到的。可以参考:https://blog.csdn.net/liumiaocn/article/details/108314207

    此方式是通过Runtime类,执行psql的copy命令,导入数据到postgresql

    public static void main(String[] args) {
        Runtime.getRuntime().exec("psql -c \"\\copy postgresdb.test2 from 'D:\\testdata.txt' WITH DELIMITER ',' NULL AS ''\"  postgresql://username:password@localhost:5000/dbname?sslmode=prefer");
    }
    

    此方法中使用的copy相关命令,参考官网psql命令。

  3. 通过jdbc的CopyManager执行copy命令。

    由于通过jdbc直接执行copy是不行的。如果不想安装客户端,而直接在主机通过jdbc执行copy命令,需要用到CopyManager。

    public static void main(String[] args) {
        Class.forName("org.postgresql.Driver");
        String url = "jdbc:postgresql://localhost:port/dbname?user=***e&password=***";
        Connection connection = DriverManager.getConnection(url);
        CopyManager copyManager = new CopyManager((BaseConnection) connection);
        FileInputStream fileInputStream = new FileInputStream("D:\\testdata.txt");
        long succesNum = copyManager.copyIn("copy postgresdb.testh(id,time) from stdin WITH DELIMITER ',' NULL AS ''", fileInputStream);
    }
    
3. 16进制分隔符处理

​ 16进制分隔符需要使用E’’来处理,比如0x01作为分隔符,要写成delimeter E’\x01’。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用`java.sql.Timestamp`类来接收PostgreSQL的timestamp数据类型。`java.sql.Timestamp`是java.sql包中的一个类,它表示SQL TIMESTAMP类型的值。 你可以使用`ResultSet`对象的`getTimestamp`方法来检索数据库中的timestamp值,并将其转换为`java.sql.Timestamp`类型。以下是一个示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; public class PostgresTimestampExample { public static void main(String[] args) { String url = "jdbc:postgresql://localhost:5432/mydatabase"; String user = "username"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT timestamp_column FROM mytable")) { while (rs.next()) { Timestamp timestamp = rs.getTimestamp("timestamp_column"); System.out.println(timestamp); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上述示例中,我们通过执行SQL查询从PostgreSQL数据库中检索了一个timestamp列。然后,使用`getTimestamp`方法将其转换为`java.sql.Timestamp`类型,并进行进一步处理。 请确保在使用`java.sql.Timestamp`之前导入正确的包(import语句): `import java.sql.Timestamp;`。 希望这个例子能够帮助你在Java中接收和处理PostgreSQL的timestamp数据类型。如果有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值