将Blob转换为java中的bytea

时间:2012-08-30 07:49:36

标签: java postgresql jdbc postgresql-9.1

我在postgresql数据库工作,我需要使用java代码将MYSQL Blob数据类型转换为PostgreSQL bytea,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

//(assuming you have a ResultSet named RS)
PreparedStatement psMySql = connMySql.prepareStatement("select myBlob from myTable where ...");
Blob blob = rs.getBlob("myBlob");

int blobLength = (int) blob.length();  
byte[] blobAsBytes = blob.getBytes(1, blobLength);

PreparedStatement psPostresql = connPostgresql.prepareStatement("INSERT INTO myNewTable VALUES (?, ?)");
psPostresql.setString(1, myId);
psPostresql.setBytes(2, blobAsBytes);
psPostresql.executeUpdate();

//release the blob and free up memory.
blob.free();

答案 1 :(得分:0)

据我所知,两者都支持JDBC驱动程序。 JDBC有一种处理BLOB的标准方法。我在DB2中一直这样做。

所以:

  • 连接到MySQL
  • 做一个选择。假设blob列是FIELD_BLOB
  • rs.getBytes( “FIELD_BLOB”)
  • 连接到Postgres
  • 做一个PreparedStatement
  • 在此预处理上调用setBytes,以MySQL中的字节传递

如果getBytes,setBytes不起作用,请尝试使用输入和输出流。