Solange es eine ODBC-Schnittstelle zur Datenquelle gibt, ist es möglich, einen SQL-Adapter zu konfigurieren, um Dateien abzufragen. Um den Adapter so zu konfigurieren, dass er Daten von mehreren Dateien einliest, ist es notwendig, die Segment-Elemente im ConnectionString-Element zu verwenden. Ein Beispiel finden Sie im vorherigen Abschnitt, der sich mit den Verbindungsstring befasst.
Der SQL-Adapter arbeitet folgendermaßen mit den Dateien:
Wenn ein Text-ODBC-Treiber installiert ist, wird das Format der Textdatei von der Schemainformationsdatei bestimmt (schema.ini). Diese Schemainformationsdatei sollte in dasselbe Verzeichnis wie die Textdatenquelle gespeichert werden.
Schema.ini-Dateien werden anhand von Eingaben erstellt und jede Eingabe beschreibt die Struktur einer einzelnen Textdatei. Die Anfangszeile bei jeder Eingabe ist der Name der Textquelldatei (eingeschlossen in eckigen Klammern).
Wenn der Adapter mit Dateien arbeitet, die mithilfe von Platzhaltern definiert wurden, ändert sich der Dateiname immer wieder. Da der Name in der schema.ini-Datei keine Platzhalter enthalten kann, muss der Adapter die schema.ini-Datei ändern, bevor er eine Verbindung zur Datenbank herstellt.
Sie müssen daher eine Anzeigezeile vor der Dateieingabezeile hinzufügen. Diese Anzeigezeile enthält das Namensmuster vom Verbindungsstring-Element in der Adapter-Konfigurationsdatei (eingeschlossen in eckigen Klammern). Der Adapter ersetzt die nächste Zeile durch den neuen Dateinamen, der in eckige Klammern eingeschlossen ist.
Hinweis: Die schema.ini-Datei kann mehrere Eingaben enthalten. Es ist Ihre Verantwortung, die Zeilen an der richtigen Stelle hinzuzufügen.
[sqltes*.txt] [sqltest2.txt] ColNameHeader = False CharacterSet = ANSI Format = TabDelimited Col1=id Char Width 30 Col2=idname Char Width 30 ---------------------------------------- [report_200*.txt] [report_2003_09.txt] ColNameHeader = False CharacterSet = ANSI Format = TabDelimited Col1=date Char Width 30 Col2=service Char Width 30 Col3=responseTime Char Width 30 ----------------------------------------
Bei jeder Abfrage enthält die Datenquellen-Kontrolldatei das Dateinamensmuster und den Namen der aktuellen Eingabedatei, um mit derselben Datei fortzufahren, wenn der Adapter neu startet.
Nachfolgend ist ein Beispiel einer Kontrolldatei im XML-Format dargestellt:
<AdapterControl Save="end" LastSaveTime="2005/03/23 09:16:15">
<Data>
<QueryCollection>
<Query QueryName="TroubleTickets (on D:\Data\Incidents*.xls)">
<KeyField Name="INC_CLOSE_DATE">
<LastValue>03.07.05 13:06:21</LastValue>
</KeyField>
<LastFileName>IncidentsMarch.xls</LastFileName>
</Query>
</QueryCollection>
</Data>
Wenn der Adapter die aktuelle Datei zu Ende gelesen hat, sucht er nach der nächsten Datei. Die nächste zu lesende Datei ist die erste Datei, deren Namensmuster passt und deren Name größer (in lexikografischer Reihenfolge) ist als der vorherige Dateiname. Der Adapter kehrt nicht zu vorherigen Dateien zurück, auch dann nicht, wenn ihnen neue Datensätze hinzugefügt werden.
Der Adapter verwendet das InitialFileName-Attribut nur, wenn diese beiden Attribute auf "nein" gesetzt sind und die Kontrolldatei den letzten Dateinamen nicht enthält.
Der Adapter überprüft den Verbindungsstring und die Abfrage nur, wenn die angegebene Datei existiert. Wenn sie mithilfe von Platzhaltern definiert wurde, prüft der Adapter nur die erste Datei.
Fehler können auftreten, wenn der Adapter versucht, von einer neuen Datei zu lesen. In diesem Fall bleibt der Adapter sofort stehen, wenn das Attribut "Critical" auf "ja" gesetzt wurde. Wurde es auf "nein" gesetzt, fährt der Adapter nicht mit dieser Abfrage, aber mit den anderen Abfragen fort. Alternativ verlässt der Adapter die aktuelle Datei und geht weiter zur nächsten Datei.
Es gibt zwei interne Variable, die in der Konfigurationsdatei verwendet werden können, um sich auf den aktuellen Zusammenhang des Dateinamens zu beziehen. Diese Variablen sind :file_name und :file_name_no_ext. Sie beziehen sich entsprechend auf den aktuellen Dateinamen bzw. den aktuellen Dateinamen abzüglich der Dateierweiterung.
Diese Variablen können im SelectStatement-Element, SelectInitialValues-Element und im QueryKeyField\Function-Attribut verwendet werden.
Der Adapter ersetzt die Variable durch den Dateinamen in den Abfragen.
Zum Beispiel:
| Copyright © 2012 CA. Alle Rechte vorbehalten. | Senden Sie CA Technologies eine E-Mail zu diesem Thema. |