[英]Inserting File into Postgres database
我正在执行从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""
以下是我用于将文件存储在数据库中的一段代码:
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);
}
请检查您的驱动程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.