Derby Export
Published on 22/04/2011
2 min read
In category
db
Beim Einsatz der Java Derby Datenbank kommt irgendwann der Wunsch einzelne Daten oder eine komplette Tabelle zu exportieren. Hierfür bietet Derby verschiedene Procedures an:
- SYSCS_UTIL.SYSCS_EXPORT_TABLE: Zum exportieren einer kompletten Tabelle
- SYSCS_UTIL.SYSCS_EXPORT_QUERY: Exportiert die Daten, die dem mitgegebenen SELECT entsprechen
- SYSCS_UTIL.SYSCS_BACKUP_DATABASE: Kompletter Backup der DB.
Die Export-Procedures liefern eine CSV-Datei, wobei man die Trennzeichen definieren kann. Beim Backup-Procedure wird die ganze Ordnerstruktur in einen gewünschten Ordner kopiert.
Zum Exportieren einer ganzen Tabelle sieht die Signatur der Procedure wie folgt aus:
SYSCS_UTIL.SYSCS_EXPORT_TABLE (
IN SCHEMANAME VARCHAR(128),
IN TABLENAME VARCHAR(128),
IN FILENAME VARCHAR(32672),
IN COLUMNDELIMITER CHAR(1),
IN CHARACTERDELIMITER CHAR(1),
IN CODESET VARCHAR(128)
)
...für eine definierte Datenmenge
SYSCS_UTIL.SYSCS_EXPORT_QUERY(
IN SELECTSTATEMENT VARCHAR(32672),
IN FILENAME VARCHAR(32672),
IN COLUMNDELIMITER CHAR(1),
IN CHARACTERDELIMITER CHAR(1),
IN CODESET VARCHAR(128)
)
Beispielhaft (mit JPA)
public void exportTable()
{
final Object[] paras = new Object[6];
paras[0] = „DB-SCHEMA“;
paras[1] = „TABLE-NAME“;
paras[2] = „EXPORT-FILE-PATH.csv“;
// Column delimiter
paras[3] = ';';
// character delimiter
paras[4] = '|';
// Codeset
paras[5] = „UTF-8“;
callProcedure(„{call SYSCS_UTIL.SYSCS_EXPORT_TABLE (?,?,?,?,?,?)}“, paras);
}
public void exportData()
{
final Object[] paras = new Object[5];
paras[0] = „SELECT \* FROM TABLE-NAME WHERE id IN (1, 2, 99) AND ...“;
paras[1] = „EXPORT-FILE-PATH.csv“;
// Column delimiter
paras[2] = ';';
// character delimiter
paras[3] = '|';
// Codeset
paras[4] = „UTF-8“;
callProcedure(„{call SYSCS_UTIL.SYSCS_EXPORT_TABLE (?,?,?,?,?,?)}“, paras);
}
public void callProcedure(final String sql, final Object... parameters)
{
final Query query = entityManager.createNativeQuery(sql);
int counter = 1;
for(Object o: parameters)
{
query.setParameter(i++, o);
}
}
Links:
- Derby DB: http://db.apache.org/derby/
- Derby Referenz Guide - Export Data: http://db.apache.org/derby/docs/10.7/ref/ref-single.html#rrefexportselectionproc
- Derby Referenz Guide – Export Table: http://db.apache.org/derby/docs/10.7/ref/ref-single.html#rrefexportproc
- Derby Referenz Guide – Backup: http://db.apache.org/derby/docs/10.7/ref/ref-single.html#rrefbackupdbproc
comment