如何用java从数据库中读取大量数据并写入文件?
我有一个derby数据库,至少有2GB的数据,我必须读取这些数据并写入文本文件。现在,有些列可能是blob数据类型 我目前的方法是以10(比方说)的批量大小一次从一个表中读取数据,并将数据(字符串列表)放入最大大小为10的数组阻塞队列中。从队列中,线程将逐个拾取元素并写入文件 我面临以下问题,如何用java从数据库中读取大量数据并写入文件?,java,derby,Java,Derby,我有一个derby数据库,至少有2GB的数据,我必须读取这些数据并写入文本文件。现在,有些列可能是blob数据类型 我目前的方法是以10(比方说)的批量大小一次从一个表中读取数据,并将数据(字符串列表)放入最大大小为10的数组阻塞队列中。从队列中,线程将逐个拾取元素并写入文件 我面临以下问题, 1. how to fetch 10 rows from a table in a single hit and fetch next 10 rows in second hit and so o
1. how to fetch 10 rows from a table in a single hit and fetch next 10 rows in second
hit and so on.
2. how to convert blob and binary data into string
您无法明确地执行此操作。但是您可以设置fetchSize。这个参数是对JDBC驱动程序的一个提示,提示从数据库一次获取多行。但是司机可以自由地忽略这一点,做它认为合适的事情。一些驱动程序以块的形式获取行,而一些驱动程序只是一次性读取整个结果集
使用fetch size(取决于驱动程序)将缓冲数据,因此在性能方面没有问题,因为它隐式地为您执行分块。因此,我们从resultset获取数据的方式基本上没有区别。您无法明确地做到这一点。但是您可以设置fetchSize。这个参数是对JDBC驱动程序的一个提示,提示从数据库一次获取多行。但是司机可以自由地忽略这一点,做它认为合适的事情。一些驱动程序以块的形式获取行,而一些驱动程序只是一次性读取整个结果集
使用fetch size(取决于驱动程序)将缓冲数据,因此在性能方面没有问题,因为它隐式地为您执行分块。因此,从resultset获取数据的方式基本上没有区别。base64编码通常用于将二进制数据放入需要ascii(如电子邮件附件)的容器中。Apache commons编解码器包括一个base64实现base64编码通常用于将二进制数据放入需要ascii(如电子邮件附件)的容器中。Apache commons编解码器包含一个base64实现您是对的…如果我们假设setFetchSize()可以工作…我们需要为此设置循环?是的,您需要以常规方式循环resultset(resultset.next())您是对的…如果我们假设setFetchSize()可以工作…我们需要为此设置循环?是的,您需要以常规方式循环resultset(ResultSet.next())