Die Jdbc Treiber werden im Jar Format ausgeliefert. Im Jar-File ist ein einfacher Jdbc-Client enthalten, der Simple Client heißt und mit dem SQL-Abfragen abgesetzt werden können.
Der Simple Client kann einfach mit Java gestartet werden, etwa so:
Nach dem Start meldet sich der Client mit Angabe seiner Version und einem Prompt:
Simple jdbc client, 1.1
>
Der Simple Client unterstützt die folgenden Befehle:
connect .... Öffnet eine Datenbankverbindung mit einer Jdbc Url
load ....... Lädt einen Jdbc Treiber mit seinem Klassennamen
quit ....... Beendet das Programm
help ....... Zeigt Hilfe an
run ........ Führt eine Kommandodatei aus
select ..... Führt eine SQL-Abfrage aus
status ..... Zeigt den aktuellen Status
trace ...... Zeigt Details des letzten aufgetretenen Fehlers
Nach dem Start ist bereits der Default-Jdbc-Treiber geladen werden. Das kann man mit dem "status" Befehl überprüfen und sieht zum Beispiel beim CsvJdbc Jar-File so aus:
> status
I have found the following drivers:
Driver: de.softquadrat.jdbc.csv.CsvDriver, 1.0
Your current connection is:
--- none ---
Jetzt kann eine Datenbankverbindung mit dem "connect" Befehl geöffnet werden. Dazu wird die vom Treiber unterstütze Jdbc-Url angegeben
> connect 'jdbc:csv:'
Connection successfully opened.
> status
I have found the following drivers:
Driver: de.softquadrat.jdbc.csv.CsvDriver, 1.0
Your current connection is:
datasqill csv driver, 1.0
Wichtig sind die einfachen Anführungsstriche, in die die Jdbc-Url eingeschlossen werden muss.
Danach können Abfragen abgesetzt werden wie etwa:
> SELECT x,y,z
- FROM "chinook.Track.csv" COLUMNS (x,y,z) SEPARATED BY '|'
- WHERE rownumber <= 8;
x y z
- - -
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Hinweis: Bei Abfragen, die sich über mehrere Zeilen erstrecken, verwendet der Simple Client ein Minuszeichen als Prompt zur Kennzeichnung.
Mit dem "run" Befehl können Kommdodateien mit Befehlen ausgeführt werden. Als Beispiel könnte man etwa folgende Datei "cmd.sql" starten:
load 'de.softquadrat.jdbc.csv.CsvDriver'
connect 'jdbc:csv:'
SELECT x,y,z
FROM "chinook.Track.csv" COLUMNS (x,y,z) SEPARATED BY '|'
WHERE rownumber <= 8;
> run 'cmd.sql'
load 'de.softquadrat.jdbc.csv.CsvDriver'
Driver "de.softquadrat.jdbc.csv.CsvDriver" loaded successfully.
connect 'jdbc:csv:'
Connection successfully opened.
SELECT x,y,z
FROM "chinook.Track.csv" COLUMNS (x,y,z) SEPARATED BY '|'
WHERE rownumber <= 8;
x y z
- - -
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Der Simple Client kann mit Kommandodateien als Argumente gestartet werden. Dann öffnet das Programm diese Dateien nacheinander und führt die darin enthaltenen Befehle aus. Das kann benutzt werden, um Initialisierungen vorzunehmen und Standardabfragen abzusetzen.
Wird etwa die Datei "cmd.sql" als Argument übergeben, so werden zunächst alle Befehle ausgeführt, bevor dann das Benutzerprompt zur Eingabe erscheint:
$ java -jar csvjdbc.jar cmd.sql
Simple jdbc client, 1.1
load 'de.softquadrat.jdbc.csv.CsvDriver'
Driver "de.softquadrat.jdbc.csv.CsvDriver" loaded successfully.
connect 'jdbc:csv:'
Connection successfully opened.
SELECT x,y,z
FROM "chinook.Track.csv" COLUMNS (x,y,z) SEPARATED BY '|'
WHERE rownumber <= 8;
x y z
- - -
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
>
Hinweis: Enthält die übergebene Kommandodatei den "quit" Befehl, so endet die Ausführung direkt ohne den nachfolgenden Wechsel in den interaktiven Benutzermodus.
Für die Beispiele wird folgende csv-Datei verwendet: Beispiel csv
jdbc-Client starten
java -jar csvjdbc.jar
Ausgabe
Simple jdbc client, 1.0
Verbinden zum Treiber
connect 'jdbc:csv:'
Ausgabe
Connection successfully opened.
Lies die ersten 8 Rows
SELECT x,y,z
FROM "chinook.Track.csv" COLUMNS (x,y,z) SEPARATED BY '|'
WHERE rownumber <= 8;
Ausgabe
x y z
- - -
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Lies 8 Rows
SELECT x,y,z
FROM "chinook.Track.csv" COLUMNS (x,y,z) SEPARATED BY '|'
WHERE rownumber > 1
AND rownumber <= 9;
Ausgabe
x y z
- - -
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
8 Inject The Venom 1
Lies die ersten 8 Rows
SELECT "TrackId",name,AlbumId
FROM "chinook.Track.csv" COLUMNS ("TrackId",Name,AlbumId) SEPARATED BY '|'
WHERE rownumber <= 8;
Ausgabe
TrackId name albumid
------- ---- -------
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Lies die ersten 8 Rows
SELECT TrackId,Name,AlbumId
FROM "chinook.Track.csv" COLUMNS (trackid,Name,AlbumId) HEADLINE 1 SEPARATED BY '|'
WHERE rownumber <= 8;
Ausgabe
trackid name albumid
------- ---- -------
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
8 Inject The Venom 1
Tauscht man in der COLUMNS-Clause die Spalten Name und trackid so bekommt man das gleiche Ergebnis wie zuvor.
SELECT TrackId,Name,AlbumId
FROM "chinook.Track.csv" COLUMNS (Name,trackid,AlbumId) HEADLINE 1 SEPARATED BY '|'
WHERE rownumber <= 8;
Das passiert nicht, wenn man die Spalten mit den Kopfzeilen im csv matched (via HEADLINE 1). Somit kann der Lieferant die Reihenefolge beliebig vetrauschen, so lange die Überschriften (=Namen) in der Kopfzeile immer gleich angegeben werden
Für die Beispiele wird folgendes Excel verwendet: Beispiel Excel
jdbc-Client starten
java -jar exceljdbc.jar
Ausgabe
Simple jdbc client, 1.0
Verbinden zum Treiber
connect 'jdbc:xlsx:'
Ausgabe
Connection successfully opened.
Lies die ersten 8 Rows
SELECT x,y,z
FROM "chinook.xlsx"."Track" COLUMNS (x,y,z)
WHERE rownumber <= 8;
Ausgabe
x y z
- - -
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Lies die ersten 8 Rows
SELECT "TrackId","Name","AlbumId"
FROM "chinook.xlsx"."Track" COLUMNS ("TrackId","Name","AlbumId")
WHERE ROWNUMBER <= 8;
Ausgabe
TrackId Name AlbumId
------- ---- -------
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Lies die ersten 8 Rows
SELECT TrackId,Name,AlbumId
FROM "chinook.xlsx"."Track" COLUMNS (TrackId,Name,AlbumId)
WHERE ROWNUMBER <= 8;
Ausgabe
trackid name albumid
------- ---- -------
TrackId Name AlbumId
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
Lies die ersten 8 Rows
SELECT TrackId,Name,AlbumId
FROM "chinook.xlsx"."Track" COLUMNS (TrackId,Name,AlbumId) HEADLINE 1
WHERE ROWNUMBER <= 8;
Ausgabe
trackid name albumid
------- ---- -------
1 For Those About To Rock (We Salute You) 1
2 Balls to the Wall 2
3 Fast As a Shark 3
4 Restless and Wild 3
5 Princess of the Dawn 3
6 Put The Finger On You 1
7 Let's Get It Up 1
8 Inject The Venom 1
Lies die ersten 8 Rows
SELECT Name,TrackId,Composer
FROM "chinook.xlsx"."Track" COLUMNS (TrackId,Name,Composer) HEADLINE 1
WHERE ROWNUMBER <= 8;
Ausgabe
name trackid composer
---- ------- --------
For Those About To Rock (We Salute You) 1 Angus Young, Malcolm Young, Brian Johnson
Balls to the Wall 2 null
Fast As a Shark 3 F. Baltes, S. Kaufman, U. Dirkscneider
Restless and Wild 4 F. Baltes, R.A. Smith-Diesel, S. Kaufman, U. Dirkscneider
Princess of the Dawn 5 Deaffy
Put The Finger On You 6 Angus Young, Malcolm Young, Brian Johnson
Let's Get It Up 7 Angus Young, Malcolm Young, Brian Johnson
Inject The Venom 8 Angus Young, Malcolm Young, Brian Johnson
Lies die ersten 8 Rows
SELECT Name1
FROM "chinook.xlsx"."Track" COLUMNS (TrackId,Name1,Composer) HEADLINE 1
WHERE ROWNUMBER <= 8;
Ausgabe
required column name name1 not found in xlsx file [xl/worksheets/sheet1.xml]