PostgreSQL使用存储过程将BYTEA插入数据库

时间:2018-01-25 10:10:10

标签: postgresql

我尝试创建一个sql脚本以将BYTEA插入数据库。在我的程序中,我使用我写的方法。这是代码

    Database db = new Database("connection String");
    File file = new File("path to file");
    FileInputStream inputStream = new FileInputStream(file);
    PreparedStatement prepStmt = db.createPreparetStatement("INSERT INTO file VALUES(?,?)");
    prepStmt.setInt(1,1);
    prepStmt.setBinaryStream(2, inputStream, file.length());
    prepStmt.executeUpdate();
    prepStmt.close();
    inputStream.close();

这很好但现在我需要在sql脚本中执行此操作。有我的问题。我不知道如何使用sql脚本将文件存储到数据库中。

    CREATE OR REPLACE FUNCTION insertFileToDatabase(id INTEGER)
    RETURNS void AS $$
    BEGIN
    INSERT INTO file VALUES (?, ?);
    -> HOW DO I INSERT BYTEA HERE <-
    END;
    $$ LANGUAGE plpgsql;

1 个答案:

答案 0 :(得分:0)

此解决方案适用于我:

    INSERT INTO [TABLENAME]([COLUMN1], [COLUMN2]) VALUES(1, pg_read_binary_file([FILE]))

不允许使用相对路径。文件必须存储在Postgres数据目录中