Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将blob数据写入文本文件(即CSV),并将其作为blob恢复回oracle数据库?_Java_Oracle_Csv_Blob_Apache Metamodel - Fatal编程技术网

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