sql - 将文件插入 Postgres 数据库

标签 sql database oracle postgresql postgresql-9.1

我正在执行从 oracle 数据库到 postgres 9.0 数据库的数据迁移。所有字段都已成功传输,除非我试图移动一列文件(Blob 对象在Oracle) 到 postgres(postgres 中的 bytea)。这是我得到的异常

org.postgresql.util.PSQLException: ERROR: syntax error at or near "",#\\034\\034(7),01444\\037\'9=82<.342\\377\\333\\000C\\001\\011\\011\\011\\014\\013\\014\\030\\015\\015\\0302!\\034!22222222222222222222222222222222222222222222222222\\377\\300\\000\\021\\010\\000D\\0004\\003\\001""

下面是我用来将文件存储在数据库中的代码:

Class.forName("org.postgresql.Driver");
        destDatabaseconnection = DriverManager.getConnection(
                rb.getString("DESTINATION_DATABASE_CONNECTION_URL"),
                rb.getString("DESTINATION_DATABASE_CONNECTION_USERNAME"),
                rb.getString("DESTINATION_DATABASE_CONNECTION_PASSWORD"));

        File file = new File("d://img//10090.gif");
        System.out.println(file.isFile());
        FileInputStream fis = new FileInputStream(file);
        prepstmt = destDatabaseconnection
                .prepareStatement("insert into entps.emp_photos(emp_number,emp_photo) values (?,?)");
        prepstmt.setInt(1, 1);

        prepstmt.setBinaryStream(2, fis, (int) file.length());
        int check = prepstmt.executeUpdate();
        System.out.println(check);

如果您曾经在 postgres 9.0

中存储过文件,请告诉我

最佳答案

只是为了好玩,我刚刚创建了一个表(在 Postgres 9.2 中)

CREATE TABLE test
(
  id integer NOT NULL,
  file bytea,
  CONSTRAINT id PRIMARY KEY (id)
)

并已成功向其上传文件(使用驱动程序 8.3 和 9.3):

public static void main(String[] args) throws Exception {
    Class.forName("org.postgresql.Driver");
    Connection conn = DriverManager.getConnection("jdbc:postgresql:test", "postgres", "");
    File file = new File("/tmp/q");
    FileInputStream fis = new FileInputStream(file);
    PreparedStatement pstmt = conn
            .prepareStatement("insert into test(id,file) values (?,?)");
    pstmt.setInt(1, 1);
    pstmt.setBinaryStream(2, fis, (int) file.length());
    int check = pstmt.executeUpdate();
    System.out.println(check);
} 

请检查您的驱动程序。

关于sql - 将文件插入 Postgres 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20756063/

相关文章:

mysql - 在 Mac 命令行上,如何执行文件 foo.sql 中的 SQL 语句并将结果以制表符分隔形式导出到另一个文件中?

sql - JOINS 和 SUBQUERIES 之间有什么区别?我们可以用连接做的任何事情也可以用子查询来做,反之亦然吗?

SQL GROUP BY 周(星期一 07 :00:00 to Monday 06:59:59)

mysql - 根据条件删除 SQL 数据库中的重复项

java - 如何在 jOOQ 查询中使用 Postgres 的 to_char?

php - 尝试将主键值分配给按钮时出错?

database - 使用快照备份 Cassandra 集群并上传到 s3/vm?

mysql - Sequelize : Check if table exist and empty

sql - 从 plsql 过程参数设置 'Order By' 子句

MySQL 将行转换为动态列数