Java 如何将blob数据写入文本文件(即CSV),并将其作为blob恢复回oracle数据库?
我正在使用Java 如何将blob数据写入文本文件(即CSV),并将其作为blob恢复回oracle数据库?,java,oracle,csv,blob,apache-metamodel,Java,Oracle,Csv,Blob,Apache Metamodel,我正在使用ApacheMetaModel从Oracle数据库中提取和还原数据。我正在将数据提取到CSV中,并将数据从CSV恢复到数据库中。很少有表具有Clob和Blob数据 当从Oracle提取数据时,我正在将BLOB转换为字符串,以便将其写入文本文件(CSV) BLOB(作为字符串)正在成功提取 现在,为了将其恢复到数据库中,我正在做完全相反的事情 InputStream stream = new ByteArrayInputStream(value.getBytes()); // read
ApacheMetaModel
从Oracle
数据库中提取
和还原
数据。我正在将
数据提取到CSV
中,并将
数据从CSV
恢复到数据库中。很少有表具有Clob
和Blob
数据
当从Oracle
提取数据时,我正在将BLOB
转换为字符串
,以便将其写入文本文件(CSV)
BLOB
(作为字符串)正在成功提取
现在,为了将其恢复到数据库中,我正在做完全相反的事情
InputStream stream = new ByteArrayInputStream(value.getBytes()); // read value from csv and convert it into the stream.
byte[] bytes = org.apache.poi.util.IOUtils.toByteArray(stream); // convert stream to bytes
Blob blob = connection.createBlob(); // create a blob
blob.setBytes(1, bytes); // put bytes into the blob
insert.value(column, blob); // insert blob into database
当我使用Oracle SQL Developer检查已还原数据到目标数据库时,它显示数据已损坏
无法从二进制流解码图像
请帮助我将BLOB数据提取到CSV中,并从CSV还原回数据库。CSV无法存储二进制数据,请先将其转换为文本安全格式,例如Base64。@Boristeider
BLOB
您无法将任意二进制数据写入文本文件!正如@TimPietzcker所说,您需要首先编码到。Hex也会起作用。
InputStream stream = new ByteArrayInputStream(value.getBytes()); // read value from csv and convert it into the stream.
byte[] bytes = org.apache.poi.util.IOUtils.toByteArray(stream); // convert stream to bytes
Blob blob = connection.createBlob(); // create a blob
blob.setBytes(1, bytes); // put bytes into the blob
insert.value(column, blob); // insert blob into database