Skip to content

Derby Export

2011 April 22
tags: ,
by Haf

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:

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • MisterWong
  • Technorati
  • Yigg
No comments yet

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS