-
SQL Vorgaben setzen: DateFmt, DecEdit etc..
Hallo liebe i-series Gemeinde,
ich habe ein Problem und hoffe, daß mir jemand helfen kann.
In einem der letzten IBM Newsletter war ein schickes bash-shell script, welches als Ersatz für CPYTOIMPF dienen kann.
Das Script ermittelt aus SYSCOLUMNS die Feldnamen und Attribute einer Datei.
Anschließend werden die Feldnamen mit Feldtrenner , z.B. ";" zusammengekettet und es wird ein entsprechender Select Befehl abgesetzt.
Wenn man das dann umleitet "> /home/huber/myfile.csv
dann hat man die gewünschte Ausgabe.
Meine Frage: Wie kann ich bestimmte Dinge vorgeben, wie beispielsweise das Datumsformat, oder das Dezimalzeichen ?
In einer interaktiven SQL Sitzung kann man das mittels F13 mühelos einstellen. Der CPYTOIMPF gibt das als Parameter mit.
Ich habe mich für diese Vorgehensweise entschieden, weil der CPYTOIMPF je nach Release ganz unterschiedlich arbeitet.
Vielen Dank für alle Antworten schon mal vorab !
Gruß
Karl
-
Ich denke mal, das Shellscript muss auch entsprechende SQL SET OPTION verwenden, ansonsten gilt das aktuelle Jobformat.
Ggf. kann man in der Verbindungszeichenfolge für Connect entsprechende Parameter einstellen, hierzu müsste man mal das Script sehen können.
-
Hallo Fuerchau,
wie wären denn die entsprechenden "Set Options" ?
Hier das shell script von Scott Klement:
#!/usr/bin/qsh
LIB=$1
FILE=$2
FIELDLIST=
get_fields() {
db2 "select '!'||sys_cname||' '||coltype from qsys2.syscolumns \
where sys_dname='$LIB' and sys_tname='$FILE'" \
| grep '^!' \
| cut -b 2-
}
build_field_list() {
FIELDLIST="'!'"
while read field type; do
case "$type" in
CHAR)
QUOTE=Y
;;
WCHAR)
QUOTE=Y
;;
VARCHAR)
QUOTE=Y
;;
*)
QUOTE=N
;;
esac
if [ "$QUOTE" = "Y" ]; then
FIELDLIST="${FIELDLIST}||','||'\"'||trim($field)||'\"'"
else
FIELDLIST="${FIELDLIST}||','||trim(char($field))"
fi
done
}
make_csv() {
RUNSQL="select ${FIELDLIST} from ${LIB}.${FILE}"
echo $RUNSQL
db2 "$RUNSQL" \
| grep "^!" \
| cut -b 3-
}
get_fields | build_field_list
make_csv
Das funktioniert - je nach Release - tadellos.
Wenn man das SQL Verhalten durch CHGJOB steuern kann, wäre es ja einfach.
Ein setzen der SQL Optionen wäre mir allerdings sympathischer.
Ich weiß nur nicht, wie die Anweisungen lauten.
Danke vorab
Karl
P.S.: Das Script funktioniert so nicht !
Das ist zwar tadelloses Unix bash script, aber auf i-series wird z.B. das "^" nicht richtig interpretiert, das ja ein "beginnend mit" Muster auswerten soll. Ich vermute mal ein Zeichensatz Thema.
P.P.S: Unter V5/R1 funktioniert das nur bei Dateien mit wenigen Feldern.
Ich vermute mal ein Restriktion in der Parametergröße, da sich der Abfragestring ziemlich aufbläht, wenn man eine Datei mit vielen Feldern hat.
Unter V5/R3 läuft das wie ein Glöckchen, bei V5/R1 ist die $Fieldlist = *BLANK, wenn die Datei viele Felder hat.
-
Irgendwo muss ja noch ein Connect stecken, da solche Scripts meist CLI verwenden.
Im Connect können dann die Parameter gesetzt werden.
Ggf. sind auch SetStatementAttribute, SetConnectionAttribute o.ä. erforderlich.
Das Dezimalformat wird automatisch aus dem Job genommen, das Datumformat kann man ggf. auch casten (Feldtyp halt ermitteln):
... char(mydate, ISO) ...
-
@Fuerchau,
nein, da gibts keinen Connect. Jedenfalls keinen, der von meiner Seite aus explizit angegeben wird.
Das script wir schlicht als qsh command abgesetzt, bzw interaktiv in einer shell aufgerufen.
Der Connect versteckt sich vermutlich implizit hier:
"db2 "$RUNSQL"
Aber ich weiß immer noch nicht, mit welchem SQL Befehl ich jetzt Einfluß auf das Verhalten nehmen könnte.
Wie würde z.B. "SetConnectionAttribute" kodiert werden ?
Gruß
Karl
-
Tja, da muss ich passen.
Vielleicht gibts ja eine Beschreibung zum db2-Objekt ?
Da kann man sicherlich noch Einstellungen vornehmen.
Similar Threads
-
By Nils_V in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 18-07-16, 09:49
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks