将数据库表(带 BLOB)导出为 CSV
Posted
技术标签:
【中文标题】将数据库表(带 BLOB)导出为 CSV【英文标题】:Export database tables(with BLOB) to CSV 【发布时间】:2012-08-16 22:21:30 【问题描述】:有人可以教我如何使用 java 将带有 BLOB 的表导出为 CSV 吗?我稍后会导入它们。一些关于这个问题的概念和一些代码可以帮助解释事情。 谢谢。
【问题讨论】:
所以你有一个表,其中一列是 BLOB,你想把整个表导出为 CSV? 是的,我有一张表,其中一列是 BLOB。 将 blob 转换为 Base64 后,我建议使用 OpenCSV 编写 CSV 文件。 opencsv.sourceforge.net 所以,你的意思是我必须对我的表进行编码解码然后使用 CSVWriter? 【参考方案1】:如果是我,我只会对二进制数据进行编码,然后像其他字段一样将其写出来。 Apache Commons 有很好的 API。我会根据您的需要使用 Base32 或 Base64 二进制编码器。这可能被称为 URL 编码,但我不是 100% 确定......这个概念仍然相同,您仍然只是获取二进制数据并将其编码为字符串:
byte[] myBlobData = \\ Retrieve from database
Base32 encoder = new Base32();
String encodedData = encoder.encodeToString(myBlobData);
// Write out data as you normally would for a CSV file
然后将其读回,只需执行相反的操作:
String encodedData = \\ Read from file
byte[] myBlobData = encoder.decode(encodedData);
我认为这对你很有效。 URL 编码(或类似的编码)适用于此,因为它们旨在允许二进制数据作为字符串安全地传输。如果您不想使用 Apache Commons 库,您可以使用 Java 的 URLEncoder 来获得。
【讨论】:
+1 表示 Base64。 URLEncoder 仅适用于字符串,所以这不是一个真正的选择。以上是关于将数据库表(带 BLOB)导出为 CSV的主要内容,如果未能解决你的问题,请参考以下文章
这个简单、易于实现的库可以将HTML表导出为xlsx、xls、csv和txt文件。