Loader. Oracle SQL*Loader. Einsatzmöglichkeit für den Import von Massendaten. 2. Datenbankworkshop der Ag Bioinformatik BIC-GH / PDW IPK



Ähnliche Dokumente
SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner

Die Datenmanipulationssprache SQL

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Ziele. Ziele. Lesson 14: Daten laden Oracle8i Datenbankadministration Teil I 14-2

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Erzeugen von Constraints

Erzeugung und Veränderung von Tabellen

Sructred Query Language

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

SQL Intensivpraktikum SS 2008

MaxDB Einführung in die Installation und Nutzung von MaxDB (Version )

Oracle: Abstrakte Datentypen:

MySQL Queries on "Nmap Results"

Themen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.

SQL (Structured Query Language) Schemata Datentypen

Skripte schreiben. Überblick SQL*Plus. Einloggen in SQL*Plus. Tabellenstrukturen anzeigen

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Datenbanken Labor, MI : Übung 1 SQL - Abfragen Patrick Lipinski

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Prakt. Datenbankprogrammierung. Sommersemester 2005

Automatisierte Datenmigration mit dynamischen SQL

Oracle SQL*Loader. Der Oracle SQL*Loader ist Programm zum Einladen von Daten aus Dateien in die Datenbank.

Options- und Freitext-Modul Update-Anleitung

17.2 MS-Access Projekte

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Professionelle Seminare im Bereich MS-Office

Referenzielle Integrität SQL

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Markus Feichtinger. Power Systems. Der Weg zu POWER! 2009 IBM Corporation

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

MySQL Installation. AnPr

Prakt. Datenbankprogrammierung. Sommersemester I,9: Datenmanipulation. Daten-Manipulations-Sprache. Das INSERT-Statement

Art der Info: Technische Background Info Teil 2 (April 2002)

Prozessarchitektur einer Oracle-Instanz

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Microsoft Access 2013 Spezifikationen

Arbeiten mit einem lokalen PostgreSQL-Server

SQL structured query language

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Artikel Schnittstelle über CSV

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

Datenbanken und Oracle, Teil 2

OPERATIONEN AUF EINER DATENBANK

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Datumsangaben, enthält mindestens Jahr, Monat, Tag

SQL und MySQL. Kristian Köhntopp

Labor 3 - Datenbank mit MySQL

Warum beschäftigt sich ein Linux-Systemhaus mit der Installation von OTRS mit einem Microsoft SQL Server?

desk.modul : WaWi- Export

Technische Beschreibung: EPOD Server

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht)

... Kontrolldatei administrieren

Kurzeinführung Excel2App. Version 1.0.0

DB2 Codepage Umstellung

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

IBM DB2 für Linux/Unix/Windows Monitoring und Tuning

MySQL, phpmyadmin & SQL. Kurzübersicht

SQL Performance - Tips Do's & Don'ts

Art der Info: Technische Background Info Teil 1 (April 2002)

Hands On! Neue Extensions. Peter Luser Copyright by TYPO3 User Group Austria 18. April 2008 Seite 1

Prozedurale Datenbank- Anwendungsprogrammierung

Flexible Schnittstelle für Flat Files in das DWH

SQL-Anweisungen. SELECT (SQL Data Query Language)

Hadoop. Eine Open-Source-Implementierung von MapReduce und BigTable. von Philipp Kemkes

Abgleich von ISBNs in Webseiten / Listen mit dem Bibliothekskatalog (Dokumentation UB Rostock / Stand: )

Oracle-Datenbankmigration mit minimalen Ausfallzeiten

Datenbanken für Online Untersuchungen

Oracle Datenbankadministration Grundlagen

Arbeit mit zusammengesetzten Datentypen

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank

Speichern. Speichern unter

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Informatik 12 Datenbanken SQL-Einführung

Kurzanleitung zur Erweiterung der htdig

Einstellungen zur Verwendung von Flashback-Abfragen

Variable. Interaktive Skripte

Relationale Datenbanken in der Praxis

Personalisierte versenden

MailUtilities: Remote Deployment - Einführung

BEDIFFERENT A C E G E R M A N Y

ipin CSV-Datenimport (Mac OS X)

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

PostgreSQL unter Debian Linux

Objektrelationale Datenbanken

Oracle Backup und Recovery

Funktionsübersicht. Beschreibung der zentralen Funktionen von PLOX

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

SQL-Einführung Teil 2

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Transkript:

2. Datenbankworkshop der Ag Bioinformatik Oracle SQL*Loader Loader Einsatzmöglichkeit für den Import von Massendaten Christian Künne IPK

Überblick Oracle SQL*Loader - Hintergrund - Anmerkungen - Funktionsweise - Kommandozeile - Aufbau der Steuerdatei - Performancesteigerung - Beispiele Literatur - K. Loney und G. Koch, ORACLE 9i The Complete Reference bzw. ORACLE 9i Die umfassende Referenz, Oracle Press - Oracle 9i - Database Utilities, Oracle Dokumentation Christian Künne - Datenbankworkshop: SQL*Loader 2

Hintergrund SQL-Anweisung INSERT fügt Daten in Tabellen ein Einsatz - Manuelles Einfügen einzelner Datensätze aus SQL Plus oder einer Datenbankanwendung - SQL-Skripte mit mehreren INSERT-Anweisungen Problem - Hoher Aufwand bei Einfügeoperationen von sehr vielen Datensätzen Lösung - Oracle Werkzeug SQL*Loader Christian Künne - Datenbankworkshop: SQL*Loader 3

Anmerkungen SQL*Loader ist ein Oracle Werkzeug und arbeitet nur mit Oracle Datenbanken Lädt Daten aus externen Dateien in Tabellen Importdaten sollten strukturiert vorliegen Ist flexibel und ermöglicht Manipulation der Daten beim Laden Lädt Massendaten schneller als SQL-Skript INSERTs und läßt sich mit der Direct Path Option weiter beschleunigen Christian Künne - Datenbankworkshop: SQL*Loader 4

Funktionsweise SQL*Loader Steuerdatei und externe Datei mit Importdaten notwendig Kommandozeilenaufruf (parametrisierbar): sqlldr [user@database] control=steuerdatei.ctl Nach Start des Ladevorgangs - Einfügen der Daten aus externer Datei in Tabellen nach Vorgaben in der Steuerdatei - Anlegen einer Log-Datei zur Protokollierung des Imports - Ggf. Anlegen einer Bad-Datei für zurückgewiesene Import-Datensätze (durch SQL*Loader oder Oracle DB-Server) - Ggf. Anlegen einer Discard-Datei für Import-Datensätze, die den Importkriterien nicht genügen Christian Künne - Datenbankworkshop: SQL*Loader 5

Funktionsweise (2) Quelle: Oracle 9i - Database Utilities, Oracle Dokumentation, S. 181 Christian Künne - Datenbankworkshop: SQL*Loader 6

Kommandozeile Verwendung: SQLLDR keyword=value [,keyword=value,...] Wichtige Parameter: - userid=scott/tiger oder scott@bimi - control=steuerdatei.ctl Alle weiteren Parameter: - userid - control - log - bad - data - discard - discardmax - skip - load - errors - rows - bindsize - silent - direct - parfile - parallel - file - skip_unusable_indexes - skip_index_maintenance - readsize - external_table - columnarrayrows - streamsize - multithreading - resumable - resumable_name - resumable_timeout - date_cache Christian Künne - Datenbankworkshop: SQL*Loader 7

Aufbau der Steuerdatei Einfache Textdatei mit SQL*Loader DDL Befehlen Drei Blöcke - Sessionspezifische Informationen - Tabellen- und Feldinformationen - Inputdaten (optional) -- This is a sample control file LOAD DATA INFILE sample.dat BADFILE sample.bad DISCARDFILE sample.dsc APPEND INTO TABLE emp WHEN (57) =. TRAILING NULLCOLS ( hiredate SYSDATE, deptno POSITION(1:2) INTEGER EXTERNAL(2) NULLIF deptno=blanks, job POSITION(7:14) CHAR TERMINATED BY WHITESPACE NULLIF job=blanks "UPPER(:job)", mgr POSITION(28:31) INTEGER EXTERNAL TERMINATED BY WHITESPACE, NULLIF mgr=blanks, ename POSITION(34:41) CHAR TERMINATED BY WHITESPACE "UPPER(:ename)", empno POSITION(45) INTEGER EXTERNAL TERMINATED BY WHITESPACE, sal POSITION(51) CHAR TERMINATED BY WHITESPACE "TO_NUMBER(:sal, $99,999.99 )", comm INTEGER EXTERNAL ENCLOSED BY ( AND % ":comm * 100" ) Christian Künne - Datenbankworkshop: SQL*Loader 8

Aufbau der Steuerdatei (2) Kommandozeilenparameter in Steuerdatei einsetzbar (OPTION (keyword=value [,keyword=value,...])) Mehrere Datendateien bzw. Inputdaten in Steuerdatei möglich Gleichzeitiges Einfügen in mehreren Tabellen möglich In Steuerdatei spezifizierte Spalten - müssen mit Spalten der Tabelle korrespondieren - haben SQL*Loader-spezifische Datentypen portabele (CHAR, Datetime, Numeric EXTERNAL (INTEGER, FLOAT, DECIMAL, ZONED), RAW,... ) nicht portabele, plattformabhängig (INTEGER, SMALLINT, DOUBLE, FLOAT, VARCHAR,... ) Nicht spezifizierte Tabellenspalten werden mit NULL gefüllt Christian Künne - Datenbankworkshop: SQL*Loader 9

Aufbau der Steuerdatei (3) Temporäre Spalten (filler fields) in der Steuerdatei (FILLER) korrespondieren zu Feldern in Datendatei, haben aber keine korrespondierenden Spalten in Tabelle Begrenzung/Eingrenzung von Feldern (TERMINATED BY/ENCLOSED BY) Bedingungsklauseln für Datenfelder (WHEN, NULLIF und DEFAULTIF) und Vergleichsoperatoren SQL-Operatoren auf Datenfelder anwendbar (z.b. UPPER()) Einfügen eindeutiger Sequenzwerte (SEQUENCE) Weitere Details siehe Dokumentation Christian Künne - Datenbankworkshop: SQL*Loader 10

Performancesteigerung Ladeprozesse außerhalb der DB Nutzungskernzeiten Deaktivierung der Redo Log Einträge durch Option unrecoverable (nur bei Direct Path Loading) oder direkt am Objekt (z.b. Tabelle) durch nologging Parallelisierung des Ladevorgangs durch mehrere gleichzeitige Ladeprozesse mit Option parallel Löschen oder Deaktivieren aller Indizes, Trigger und überflüssigen Integritätsregeln auf Zieltabelle(n) Reservierung von genügend Speicherplatz für Zieltabelle(n) zur Vermeidung von dynamischen Erweiterungen während Ladeprozeß Einrichtung mehrerer DBWR (Database Writer)-Prozesse zur Optimierung des Schreibprozesses der Daten Christian Künne - Datenbankworkshop: SQL*Loader 11

Direct Path Loading Performancesteigerung (2) - Viel schneller als konventionelles Laden - Schreiben von vorformatierten Blöcken (Oracle data blocks) direkt in Datenbankdateien statt generierter SQL INSERT Befehle beim konventionellen Laden - unrecoverable keine Redo Log Einträge - parallel mehrere gleichzeitige Path Load Sessions - Direktes Laden einzelner Partitionen bei Partitionierung einer Tabelle - Einschränkungen siehe Dokumentation Christian Künne - Datenbankworkshop: SQL*Loader 12

Beispiele Steuerdatei inkl. Daten LOAD DATA INFILE * INTO TABLE dept FIELDS TERMINATED BY, OPTIONALLY ENCLOSED BY " (deptno, dname, loc) BEGINDATA 12,RESEARCH,"SARATOGA" 10,"ACCOUNTING",CLEVELAND 11,"ART",SALEM 13,FINANCE,"BOSTON" 21,"SALES",PHILA. 22,"SALES",ROCHESTER 42,"INT L","SAN FRAN" Steuerdatei LOAD DATA INFILE ulcase2.dat INTO TABLE emp ( empno POSITION(01:04) INTEGER EXTERNAL, ename POSITION(06:15) CHAR, job POSITION(17:25) CHAR, mgr POSITION(27:30) INTEGER EXTERNAL, sal POSITION(32:39) DECIMAL EXTERNAL ) Datendatei 7782 CLARK MANAGER 7839 2572.50 7934 MILLER CLERK 7782 920.00 7566 JONES MANAGER 7839 3123.75 7499 ALLEN SALESMAN 7698 1600.00 Christian Künne - Datenbankworkshop: SQL*Loader 13

Beispiele (2) Steuerdatei Datendatei LOAD DATA INFILE 'clones_import.dat' BADFILE 'clones.bad' DISCARDFILE 'clones.dsc' APPEND INTO TABLE clone FIELDS TERMINATED BY ',' ( clone_nr SEQUENCE(MAX,1), clone_id CHAR, library_id CHAR, shippable INTEGER EXTERNAL ) HA02C13,HA,0 HB27H21,HB,0 HD05N04,HD,0 HF01K08,HF,0 HM08K09,HM,0 HO00C01,HO,0 HP09A06,HP,0 HT07L05,HT,0 HU10H07,HU,0 HV10D10,HV,0 HX06D02,HX,0 HY03B21,HY,0 HY03I08,HY,0 HZ01C03,HZ,0 Christian Künne - Datenbankworkshop: SQL*Loader 14

Beispiele (3) Steuerdatei LOAD DATA INFILE 'load_seq.dat' BADFILE 'load_seq.bad' DISCARDFILE 'load_seq.dsc' APPEND INTO TABLE est_seq FIELDS TERMINATED BY ' ' ( est_seq_id CHAR, library_id CHAR, clust_proj INTEGER EXTERNAL, "SEQUENCE" LOBFILE(CONSTANT 'load_seq.lob') TERMINATED BY "<end>\n", entry_date DATE "DD-MM-YYYY" ) Datendatei GAN002A01f GAN 3 01-10-2002 GBN002M20f GBN 3 01-10-2002 GCW003H21r GCW 3 01-10-2002 GNW002P06r GNW 3 01-10-2002 GW001M22r GW 3 01-10-2002 LOB-Datei AGCAGCGCCTT CTGTGTT<end> GCGGCCGCTCG TCTTGGTAATCTT<end> GATCTGCTCTG TGCAGATTAT<end> CTGATAAGAAT ATAAT<end> AATTATCTTAC ACTCACTGTTG<end> Christian Künne - Datenbankworkshop: SQL*Loader 15

Beispiele (4) Steuerdatei LOAD DATA INFILE 'score_spool.txt' BADFILE 'load_seq_score.bad' DISCARDFILE 'load_seq_score.dsc' REPLACE INTO TABLE est_seq_score FIELDS TERMINATED BY ',' ( est_seq_id CHAR, seq_score VARRAY TERMINATED BY ':' ( seq_score INTEGER EXTERNAL ) ) Datendatei HY06D18V,1,2,3,4,5,6,7,8,9,0: HY01A03T,: HY01A07T,100,200,300,400: HY01A11T,999: Christian Künne - Datenbankworkshop: SQL*Loader 16

Beispiele (5) Online Beispiel Christian Künne - Datenbankworkshop: SQL*Loader 17