简体   繁体   English

将文件插入Postgres数据库

[英]Inserting File into Postgres database

I am performing Data migration from oracle database to postgres 9.0 database .All fields are successfully transferred except when i am trying to move a column of file (Blob object in Oracle) into the postgres (bytea in postgres).This is the exception what i am getting 我正在执行从oracle数据库到Postgres 9.0数据库的数据迁移。所有字段都已成功传输,除非我尝试将文件的一列(Oracle中的Blob对象)移动到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""

Below is the piece of Code i am using for storing the file in the database : 以下是我用于将文件存储在数据库中的一段代码:

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);

Please let me know if you have ever stored a file in the postgres 9.0 如果您曾经在postgres 9.0中存储过文件,请告诉我

Just for the fun of it I've just created a table (in Postgres 9.2) 只是为了好玩,我刚刚创建了一个表(在Postgres 9.2中)

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

and have successfully uploaded a file to it (using driver 8.3 and 9.3): 并已成功将文件上传到该文件(使用驱动程序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);
} 

Please check you driver. 请检查您的驱动程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM