package shop; import java.io.IOException; import org.databene.benerator.StorageSystem; import org.databene.commons.IOUtil; import org.databene.commons.ReaderLineIterator; import org.databene.model.data.DataModel; import org.databene.model.data.Entity; import org.databene.platform.csv.CSVEntityExporter; import org.databene.platform.db.DBSystem; import org.databene.webdecs.DataContainer; import org.databene.webdecs.DataIterator; import org.databene.webdecs.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CSVTableExporterDemo { private static final String JDBC_DRIVER = "org.hsqldb.jdbcDriver"; private static final String JDBC_URL = "jdbc:hsqldb:mem:benerator"; private static final String USER = "sa"; private static final String PASSWORD = null; private static Logger logger = LoggerFactory.getLogger(CSVTableExporterDemo.class); public static void main(String[] args) throws IOException { // first we create a table with some data to export DBSystem db = new DBSystem(null, JDBC_URL, JDBC_DRIVER, USER, PASSWORD, new DataModel()); try { db.execute("create table db_data (" + " id int," + " name varchar(30) NOT NULL," + " PRIMARY KEY (id)" + ")"); db.execute("insert into db_data values (1, 'alpha')"); db.execute("insert into db_data values (2, 'beta')"); db.execute("insert into db_data values (3, 'gamma')"); db.setFetchSize(100); // ...and then we export it exportTableAsCSV(db, "db_data.csv"); logger.info("...done!"); printFile("db_data.csv"); } finally { db.execute("drop table db_data"); } } private static void exportTableAsCSV(StorageSystem db, String filename) { DataSource<Entity> entities = db.queryEntities("db_data", null, null); DataIterator<Entity> iterator = null; try { iterator = entities.iterator(); DataContainer<Entity> container = iterator.next(new DataContainer<Entity>()); Entity cursor = container.getData(); CSVEntityExporter exporter = new CSVEntityExporter(filename, cursor.descriptor()); try { logger.info("exporting data, please wait..."); exporter.startProductConsumption(cursor); while ((container = iterator.next(container)) != null) exporter.startProductConsumption(container.getData()); } finally { exporter.close(); } } finally { IOUtil.close(iterator); } } private static void printFile(String filename) throws IOException { System.out.println("Content of file " + filename + ":"); ReaderLineIterator iterator = null; try { iterator = new ReaderLineIterator(IOUtil.getReaderForURI(filename)); while (iterator.hasNext()) System.out.println(iterator.next()); } finally { IOUtil.close(iterator); } } }