====== Informix ====== * [[http://de.wikipedia.org/wiki/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. * [[http://www.iug.de/|Informix User Group e.V.]] ===== 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] * Quelle: [[http://www.iiug.org/idug06/L04.pdf]] 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) * [[http://herber-consulting.de/html/db2/Architecture.html]] 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])