Derby Export

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:

comment

Comments

arrow_back

Previous

REST JMX Monitoring

Next

JPA: Dynamic Datasource Routing
arrow_forward