itrain-home  
home
 Aktuelle Seite:  knowhow sql transfer import txt index.asp 
 



 

Microsoft SQL Server - Datenimport

[Dieses Kapitel wird zur Zeit noch bearbeitet]

Textdateien

Da Textdateien in den unterschiedlichsten Formaten vorliegen können, gilt es zunächst einige Vorbedingungen zu prüfen, bevor man entscheiden kann mit welcher Methode die Daten am Besten geladen werden können.

Bevor Sie sich für eine Methode entscheiden, sollten die folgenden Fragen zum Aufbau der Textdateien, der Zieltabellen und der Aufgabenstellung geklärt werden:

Textdateien - Fragen

  • Besitzen die einzelnen Spalten in der Textdatei eine feste Spaltenbreite oder sind die Spalten durch ein Trennzeichen voneinander getrennt (meist Tabulator, Semikolon, Komma)?
  • Sind Textspalten in Anführungszeichen (") gesetzt?
  • Sind in den Daten Datumswerte vorhanden und falls ja, in welchem Format ist das Datum angegeben?
  • Sind in den Daten Dezimalzahlen vorhanden und wird ein Dezimalpunkt oder das Dezimalkomma als Trennzeichen verwendet?
  • Mit welchem Zeichensatz (ANSI, OEM, Unicode, Sonstige) wurde die Textdatei erstellt?
  • Sind die Daten in einem gültigen, konsistenten Zustand für die Zieltabelle (z.B. Doppelte Primärschlüssel u.ä.)?
  • Besitzt die Zieltabelle eine IDENTITY-Spalte?
  • Enthält die erste Zeile die Spaltenüberschriften?
  • Besteht die Zieltabelle bereits oder muss Sie erstellt werden?
  • Sollen lediglich neue Daten hinzugefügt werden, oder soll ein Abgleich stattfinden (Hinzufügen, Aktualisieren, Löschen von Daten)?

Feste Spaltenbreite oder Trennzeichen

Am einfachsten lassen Sie Daten aus einer Tabelle mit fester Spaltenbreite importieren. Als Werkzeuge kommen bcp, BULK INSERT und DTS in Betracht. Falls die Spalten und Zeilen durch Trennzeichen markiert sind muss selbstverständlich sichergestellt werden, dass das Trennzeichen nicht innerhalb der Daten verwendet wird.

Textspalten in Anführungszeichen

Bei vielen Exportprogrammen werden Textspalten mit umschließenden Anführungszeichen exportiert; falls Ihre Datei solche Daten verwendet können die schnellen Methoden bcp und BULK INSERT nur eingeschränkt verwendet werden, da für jedes Anführungszeichen in der Formatdatei eine entsprechende Pseudo-Spalte definiert werden müsste. Einfacher ist bei solchen Dateien der Import über DTS oder bei kleinen Dateien mit Hilfe einer Ad-hoc Abfrage oder eines Verbindungsservers.

Datumswerte

Sind in der Textdatei Datumswerte vorhanden, so muss das Datumsformat bestimmten Konventionen entsprechen, wenn ein schneller Import per bcp oder Bulk Insert erfolgen soll. Ab dem SQL Server 2000 kann durch Setzen der Option -R das Datumsformat aus der Ländereinstellung des Client-Rechners verwendet werden.

Dezimalzahlen

Für Dezimalzahlen verwendet BCP grundsätzlich den Dezimalpunkt als Trennzeichen. Lediglich für Zielspalten vom Typ money kann die Ländereinstellung berücksichtigt werden. Sind in den Daten Dezimalzahlen vorhanden, die das Dezimalkomma verwenden, muss DTS oder eine andere Methode verwendet werden.

Zeichensatz

Speziell bei deutschen Daten gibt es immer wieder Probleme beim Import von Daten die Umlaute enthalten. Dieses Problem taucht immer auf, wenn unterschiedliche Zeichensätze verwendet werden. In den meisten Fällen liegen die Importdateien im OEM oder ANSI Format vor. Beim Massenkopieren (bcp) sollte das entsprechende Format angegeben werden.

Konsistente Daten

Das schnelle Laden mit Hilfe von bcp bricht ab, wenn beim Import Fehler wie doppelte Primärschlüssel o.ä. auftauchen.

Falls Sie nicht sicher sind, ob solche Daten existieren, empfiehlt es sich die Daten zunächst in eine temporäre Tabelle zu importieren und anschließend die "gesäuberten" Daten in die eigentliche Zieltabelle zu übertragen.

Identity-Spalte

Wird durch den Import ein expliziter Wert für eine IDENTITY-Spalte in der Zieltabelle angegeben, so muss dies speziell angegeben werden. Dies ist bei allen Importmethoden möglich (bcp -E, SET IDENTITY_INSERT tabelle ON).

Zieltabelle

Falls die Zieltabelle bereits besteht und das gleiche Format besitzt wie die Textdatei können alle Werkzeuge verwendet werden.

Besteht die Zieltabelle noch nicht und sind auch keine Informationen über den Aufbau der Tabelle vorhanden, so hilft DTS am ehesten, um die Zieltabelle zu erstellen.

Reiner Import oder Abgleich

Wenn Daten lediglich importiert werden bieten sich BULK INSERT und bcp an. Falls ein weitergehender Abgleich stattfinden soll ist sicherlich DTS das bessere Werkzeug für den Import der Textdatei(en).

Beispiele

Import von Textdateien mit Hilfe von bcp

Import von Textdateien mit Hilfe von BULK INSERT

Import von Textdateien über einen Verbindungsserver

Import von Textdateien mit DTS (Data Transformation Services

Import von Textdateien über Microsoft Jet OLEDB Provider

Import einer kompletten Textdatei in eine Datenspalte

Import von Textdateien über eine Ad-Hoc Abfrage

Verwenden von Textdateien in Transact-SQL Abfragen

Name der Zieltabelle
Name der Importdatei
Zeichensatz der Importdatei
Feste Spaltenbreite oder Trennzeichen
Spaltentrennzeichen
Zeilentrennzeichen
Datumsformat
Währungsformat
Dezimaltrennzeichen in numerischen Feldern (außer money)
Identity-Spalte wird explizit gefüllt
Spaltenüberschriften in der ersten Zeile

s.a. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcjetschema_ini_file.asp

Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "Visual Basic": www.mvps.org/vbnet/

Viele Code Beispiele und API-Hilfen