csv. Datei mit Komma lässt sich nicht einlesen

SSMS 15.0.18410.0

Wie bekomme ich die DBMS Info heraus?

Aber mal eine andere Frage:
Ich hab jetzt VARCHAR statt FLOAT genommen um das Komma Thema zu übersprungen. BULK INSERT funktioniert für eine kleine Datei ohne Probleme. Allerdings ist die CSV Datei die ich beladen will 900 MB groß. Dann kommt folgende Fehlermeldung:

Fehler beim Massenladen. Die Spalte in der Datendatei ist zu lang für 1-Zeile, 75-Spalte. Überprüfen Sie, ob das Feldabschlusszeichen und das Zeilenabschlusszeichen richtig angegeben sind.

Weiß jemand was das genau bedeutet? Ich frage mich, ob ich am Ende überhaupt in der Lage sein werde, so eine große Datei in die Datenbank einzulesen.
 
Werbung:
Ganz interessant... wenn ich die CSV aufmache und neu abspeichere sind es 500 MB und ich kann Sie einlesen. Vermutlich gehen dabei aber Datensätze verloren. Beim öffnen der CSV wird man auch gerade darauf hingewiesen.

Aber warum kann man es vorher nicht einlesen? :confused:
 
Welche wären das? :oops:
Ist es aber tatsächlich so, dass man zu große Dateien nicht auf einmal in die Datenbank reinbekommt?
 
Evtl. sind die Integration Services sinnvoller als ein Bulk Insert? IS (Ist ein ETL Tool) ist genau dafür gemacht.
 
Hallo zusammen,

ich habe eine .csv Datei die ich mit einem BULK INSERT einlesen möchte.

Vorher erstelle ich die Tabelle wie folgt:

CREATE TABLE NAME (
[Betrag] FLOAT NOT NULL
usw.
)

Betrag ist eine Komma Zahl. Aber bei der Zuordnung Float gibt es eine Fehlermeldung. Ich habe noch 50 weitere Spalten mit Komma Einträge und möchte ungerne alles als VARCHAR einlesen und später mit REPLACE anpassen. Gibt es hier eine Möglichkeit das bei CREATE gleich richtig umzusetzen?

Danke & Gruß

CSV: comma separated values. Wenn da numerischen Werte sind, die ein Komma anstatt, wie es richtig wäre, einen Punkt haben, dann hast Du da ein prinzipielles Problem. Wenn die Felder mit ';' getrennt sind ist es schon mal besser.
Der vielleicht einfachste Weg (wenn die CSV ansonsten syntaktisch okay ist) das erst einmal in eine Zwischentabelle einlesen und das Feld, um das es hier geht, als TEXT belassen. Später entweder via ALTER TABLE oder SELECT INTO ... dann bereinigen.
 
Die DBMS Version bekommst du im SSMS in den Server-Eigenschaften angezeigt, einfach Rechtsklick auf das "oberste" Objekt im Baum und dann unter "General" oder "Allgemein" die Nummer bei "Version". I.d.R. beinhaltet auch der Root-Pfad die Versionsnummer bei MSSQL, muss aber natürlich nicht.

Womit hast du die Datei vorher geöffnet? Du solltest eine CSV nie mit Excel neu abspeichern. Excel zerhaut dir eine ganze Menge weil es z.B. Datumswerte oder Exponentialfunktionen erkennt und die Datei mal eben nach Lust und Laune verändert. Du kannst natürlich die Datei mit Excel öffnen, solltest sie damit aber nicht verändern. Eventuell wurde hier einfach eine Komprimierung angewandt, reine Textdateien werden ja schnell groß.

Datenimport aus einer Datei ist nicht immer einfach. Du hast ein Format das nicht immer einheitlich ist. Du kannst Trennzeichen haben die sich im Text wiederholen. Wenn dein Trennzeichen ein Komma ist und die Textfelder nicht anderweitig abgegrenzt wurden, dann führt jedes Komma in einer Zeile (Datensatz) dazu das sich für den Import plötzlich eine zusätzliche Spalte ergibt (und Spalten plötzlich andere Werte transportieren, z.B. Text statt Zahlen). Dann knallt es jedes mal. Du kannst erstmal ohne FIELDTERMINATOR arbeiten und nur mit ROWTERMINATOR alle Datensätze in eine Tabelle mit genau einer Textspalte importieren. Wenn das klappt hast du ein Problem mit deinem FIELDTERMINATOR.
 
Version 13.0.6300.2
Was genau ist denn der Unterschied zwischen SSMS und DBMS?
Ich hatte an sich nur CSV geöffnet und wieder als CSV abgespeichert. Da nicht alle Werte im Raster angezeigt werden können geht ein Teil beim abspeichern wieder verloren. Man müsste die CSV direkt ohne öffnen, bearbeiten etc. in die Datenbank spielen aber scheint leider nicht zu gehen.
 
Version 13.0.6300.2
Das ist MS SQL 2016.
Was genau ist denn der Unterschied zwischen SSMS und DBMS?
SSMS = SQL Server Management Studio, ein Client
DBMS = Datenbank Management System, der eigentliche SQL Server, auf den du dich verbunden hast
Ich hatte an sich nur CSV geöffnet und wieder als CSV abgespeichert.
Dabei wird Excel die Datei inhaltlich verändern.
Da nicht alle Werte im Raster angezeigt werden können geht ein Teil beim abspeichern wieder verloren.
Verstehe ich nicht, ist mir aber auch egal. Sollte man nicht machen mit Tools wie Excel.
Man müsste die CSV direkt ohne öffnen, bearbeiten etc.
Geht logischer Weise nicht aber es gibt Editoren die natürlich sauber damit umgehen können und nicht so einen Rotz machen. Du kannst auch mit der Powershell in Textdateien schreiben etc.
in die Datenbank spielen aber scheint leider nicht zu gehen.
Es ist eben nicht so trivial, vor allem nicht mit so großen Dateien. Dir fehlt Erfahrung um die ganzen Probleme selbstständig abzuarbeiten und du kannst nicht wegen jedem falschen Komma einen Foren-Thread auf machen.

Wo kommen die Daten den her? Wer hat die exportiert und kann sie eventuell auch importieren oder zumindest das Export-Format mal benennen?
 
Werbung:
SSMS 15.0.18410.0

Wie bekomme ich die DBMS Info heraus?

Aber mal eine andere Frage:
Ich hab jetzt VARCHAR statt FLOAT genommen um das Komma Thema zu übersprungen. BULK INSERT funktioniert für eine kleine Datei ohne Probleme. Allerdings ist die CSV Datei die ich beladen will 900 MB groß. Dann kommt folgende Fehlermeldung:

Fehler beim Massenladen. Die Spalte in der Datendatei ist zu lang für 1-Zeile, 75-Spalte. Überprüfen Sie, ob das Feldabschlusszeichen und das Zeilenabschlusszeichen richtig angegeben sind.

Weiß jemand was das genau bedeutet? Ich frage mich, ob ich am Ende überhaupt in der Lage sein werde, so eine große Datei in die Datenbank einzulesen.
Du machst es dir unnötig schwer. Importiere deine CSV einfach in Excel und schau was dabei rauskommen. dann siehst du ja was da eventuell nicht passt
 
Zurück
Oben