我尝试创建一个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;
答案 0 :(得分:0)
此解决方案适用于我:
INSERT INTO [TABLENAME]([COLUMN1], [COLUMN2]) VALUES(1, pg_read_binary_file([FILE]))
不允许使用相对路径。文件必须存储在Postgres数据目录中