Hallo Leute,
mal zwangsläufig muss ich groovy kennenlernen. Das Aufgabe ist dabei Dateien aus einer Datenbank zu exportieren. Dabei wurde die Anfrage in zwei Teile getrennt. Im ersten Teil der Anfrage (query_documents) werden zunächst einmal allgemeine Daten abgefragt und daraus filename erstellt. Dann wird es im oldDocHome geschaut, ob eine Datei mit diesem Namen bereits existiert. Wenn ja, dann wird diese Datei einfach in docHome kopiert (statt sie aus der Datenbank zu exportieren). Wenn nicht, wird blob_data (query_blob) abgefragt und die Datei aus der Datenbank exportiert.
Es funktioniert leider nicht((( Und da ich mich mit Syntax so gut wie gar nicht auskenne, sehe ich meine Fehler nicht. Bei Ausführung bekomme ich:
No such property: blobref_id
Kann mir jemand helfen?
Gruß, madlena
mal zwangsläufig muss ich groovy kennenlernen. Das Aufgabe ist dabei Dateien aus einer Datenbank zu exportieren. Dabei wurde die Anfrage in zwei Teile getrennt. Im ersten Teil der Anfrage (query_documents) werden zunächst einmal allgemeine Daten abgefragt und daraus filename erstellt. Dann wird es im oldDocHome geschaut, ob eine Datei mit diesem Namen bereits existiert. Wenn ja, dann wird diese Datei einfach in docHome kopiert (statt sie aus der Datenbank zu exportieren). Wenn nicht, wird blob_data (query_blob) abgefragt und die Datei aus der Datenbank exportiert.
Es funktioniert leider nicht((( Und da ich mich mit Syntax so gut wie gar nicht auskenne, sehe ich meine Fehler nicht. Bei Ausführung bekomme ich:
No such property: blobref_id
Java:
String query_documents = """SELECT a.id id, a.version version, e.language language, e.name name, e.blobref_id blobref_id
FROM ${tableuser}.attachment_entry e, ${tableuser}.attachment_entries ae, ${tableuser}.attachment a, ${tableuser}.attachment_blob b
WHERE e.id = ae.attachment_entry_id AND a.id = ae.attachment_id AND e.blobref_id = b.id AND a.id > 3000 AND a.id < 3011"""
logger.debug("About to query: $query_documents")
sql.withStatement { stmt ->
//stmt.fetchSize = 10
//stmt.maxFieldSize = 30000000
//logger.debug("fetchSize=${stmt.fetchSize}, maxFieldSize=${stmt.maxFieldSize}")
}
sql.eachRow(query_documents) {
String lang = it.LANGUAGE != null ? it.LANGUAGE : "null"
String ext = getExtension(it.NAME)
String filename = "${it.ID}.${it.VERSION}.${lang}.${ext}"
// look for filename in olddata dir
File thisFile = new File ("$oldDocHome/$module", filename)
// if it exists copy it
if (thisFile.exists()) {
try {
FileUtils.copyFile(thisFile, new File ("$docHome/$module", thisFile.getName ()));
//logger.debug("Copying of " + fileName)
} catch (IOException e) {
e.printStackTrace();
}
}
else {
String query_blob = "SELECT blob_data from ${tableuser}.attachment_blob WHERE blobref_id = :id"
sql.eachRow(query_blob, [id: blobref_id]) { row ->
writeBlob(filename, row.getBinaryStream("BLOB_DATA"), module)}
}
} // for each row in query_documents
Kann mir jemand helfen?
Gruß, madlena