Inhaltsverzeichnis

Informix

Informix ist der Produktname für ein bekanntes Datenbankmanagementsystem (DBMS). Die gleichlautende Datenbankfirma wurde 2001 von IBM übernommen, die Software wird seitdem von IBM weiterentwickelt und liegt aktuell in der Version 11.10 vor. Am 28. April 2008 wurde die neuste Version 11.5 vorgestellt. Erstmals wird diese Version auch auf dem Apple-Rechner zur Verfügung stehen.

Das ehemalige Unternehmen Informix spielte bei der Verbreitung relationaler Datenbanken (RDBMS) unter Unix eine bedeutende Rolle - als stärkster Wettbewerber von Oracle. Die zugehörige, ebenfalls auf UNIX und auf Terminalbetrieb ausgerichtete Integrierte Entwicklungsumgebung Informix - 4GL war in den frühen neunziger Jahren das vermutlich verbreitetste 4GL- Entwicklungswerkzeug überhaupt. In Deutschland wurden die Informix-Produkte zunächst durch den Distributor und Systemintegrator Garmhausen und Partner, dann durch die BYTEC GmbH sowie Siemens bekanntgemacht und etabliert.

Während der Datenbankserver Informix Dynamic Server (IDS) auch heute noch weit verbreitet ist, gelang es dem Unternehmen nicht, ein ähnlich erfolgreiches Nachfolgeprodukt für die inzwischen veraltete 4GL-Entwicklungsumgebung auf den Markt zu bringen.

Konfiguration

Die sqlhosts ist nach folgendem Format aufgebaut:

[$INFORMIXSERVER]    [Socket]    [Hostname]     [Port]

Die Ports werden (wie bei jedem Unix) in der /etc/services aufgelöst.

Beispiele

DBDATE='Y4MD-'            # Europäisches Datumsformat: 2010-03-25

echo "
UNLOAD TO '/tmp/temp.unl'
SELECT
FIRST 10
Spalte1,
Spalte2,
TO_CHAR(date,'%Y-%m-%d') AS datum,
WEEKDAY(date) AS wochentag,
count(*)
FROM [TABELLE-X]
WHERE file_source_id LIKE 'D00%'
GROUP BY 1, 2, 3, 4
ORDER BY 3 DESC, 2, 1
" | dbaccess [DB-Name]@[$INFORMIXSERVER]

Der 1. des vergangenen Monats:

DATE(EXTEND(TODAY,YEAR TO MONTH)-1 UNITS MONTH)

Der letzte des vergangenen Monats:

DATE(EXTEND(TODAY,YEAR TO MONTH))-1

Der 1. des aktuellen Monats:

DATE(EXTEND(TODAY,YEAR TO MONTH))

Der 1. des naechsten Monats:

DATE(EXTEND(TODAY,YEAR TO MONTH)+1 UNITS MONTH)

Tabelleninhalt in eine Datei schreiben

UNLOAD TO '/tmp/out' SELECT tabname FROM systables WHERE [Tabelle] LIKE 'Fritz%' OR [Tabelle] LIKE 'Franz%';

alle DBs zeigen

echo "SELECT name FROM sysdatabases" | dbaccess [DB-Name]@[$INFORMIXSERVER]
 > name  [DB-Name]

alle Infos von allen DBs anzeigen

echo "SELECT * FROM sysdatabases" | dbaccess sysmaster@[$INFORMIXSERVER]

alle Tabellen einer DB zeigen

echo "SELECT tabname FROM systables" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO TABLES" | dbaccess [DB-Name]@[$INFORMIXSERVER]
 > [Tabelle]

alle Infos von einer DB anzeigen

echo "SELECT * FROM systables" | dbaccess [DB-Name]@[$INFORMIXSERVER]

alle Infos von einer Tabelle anzeigen

echo "INFO COLUMNS    FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO INDEXES    FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO ACCESS     FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO PRIVILEGES FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO REFERENCES FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO STATUS     FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
echo "INFO FRAGMENTS  FOR [Tabelle]" | dbaccess [DB-Name]@[$INFORMIXSERVER]
/opt/informix/bin/dbaccess [DB-Name]@[$INFORMIXSERVER] /tmp/aufruf.sql

Einen SQL-Aufruf übers netz schicken:

echo "SELECT * FROM [Tabelle]" | (export DBDATE="Y4MD-";export INFORMIXDIR=/opt/informix;export INFORMIXSERVER=[$INFORMIXSERVER];cat | /opt/informix/bin/dbaccess [DB-Name]@[$INFORMIXSERVER])