"Ungültiges Datumsformat" beim Import von flat-file-Import-Assistenten
Guten Tag,
Ich habe ein dilemma, dass ich nicht herausfinden. Ich bin versucht, zu importieren einer flachen Datei in eine SQL-db-Tabelle, aber habe Probleme. Meine Spalte in SQL ist eine Datum-Zeit-Spalte für das Geburtsdatum Geburtsdatum. Die Extraktion flat-file zur Verfügung gestellt hat mir diese Spalte als Datum...also, wenn ich importin auf SQL bin ich immer:
Messages
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Invalid date format".
(SQL Server Import and Export Wizard)
Error 0xc020901c: Data Flow Task 1: There was an error with input column "DOB" (212) on input "Destination Input" (147). The column status returned was: "Conversion failed because the data value overflowed the specified type.".
(SQL Server Import and Export Wizard)
Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "input "Destination Input" (147)" failed because error code 0xC020907A occurred, and the error row disposition on "input "Destination Input" (147)" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)
Ich versuche, herauszufinden, wie man eine random time 00:00:00.000 zu jedem Geburtsdatum in der flat-file. Beispiel, schicken Sie mir 1983-11-30 aber ich will 1983-11-30 00:00:00.000
Gibt es eine Möglichkeit, dies zu tun, oder hat jemand eine Idee was ich tun kann? Vielen Dank im Voraus
- Dies sollte kein problem sein (zumindest nicht die, die Sie denken). Ein
DATETIME
Spalte wird automatisch angenommen, dass die Zeit00:00:00.000
wenn es erhält nur ein Datum. Das wahrscheinlichste Problem hier ist Pfingstmontag, der Datum format, SQL-Server kann vorausgesetzt werden, dass das format für Ihr DatumYYYY-DD-MM
stattYYYY-MM-DD
- Versuchen Sie
SET DATEFORMAT ymd
vor dem ausführen der bulk insert. - Danke....Ich denke, dass meine Probleme woanders liegt...ich lief einfach durch mit dem format bleiben die gleichen und es 0 vorausgesetzt ist, wie Sie dachte. Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
MSSQL wird kein problem haben, die Umwandlung einer
yyyy-MM-dd
string wie Ihnen auf ein Datum. Sie werden am Ende mit00:00:00.000
automatisch. Die Fehlermeldung, die du gepostet "Konvertierung ist fehlgeschlagen, da der Datenwert überfüllt, ist der angegebene Typ" zeigt an, dass einer der Termine ist außerhalb des gültigen Bereichs. Sie wahrscheinlich hat ein ungültiges Geburtsdatum (suchen Sie nach einem0000-00-00
aufnehmen oder ähnliches). Wenn die Flatfile mit Trennzeichen in eine Art Excel können leicht analysieren, ziehen Sie Sie in Excel und Sortieren dieser Spalte. Blick auf sowohl die kleinsten und größten Werte, und Sie werden wahrscheinlich feststellen, die betreffende Datensatz(s).Meine situation war ein wenig anders, aber ich fühle mich über die Entsendung es könnte anderen helfen, die es gibt. Im Gegensatz zu OP, ich war das importieren von Daten aus einer Access 2000-mde-Datei in sql server management studio, aber ähnlich wie die OP lief ich in den "Ungültiges Datenformat" angezeigt. Ich wusste, dass der Konflikt wurde verursacht durch die Tatsache, dass die Spalten vom Typ
DateTime
in der access-Datei in Konflikt mit derDataTime
- format in sql.Lösung:, Nachdem ich ging durch die import-Daten Prozess, der durchgeführt wird, durch einen Rechtsklick auf den Servernamen in der sql server management studio -> Aufgaben -> Daten Importieren, und wählen Sie dann die Quelle (access), Ziel (sql-server), und die Tabelle, die importiert werden sollen, habe ich bemerkt, dass 0 Zeilen wurden übernommen, weil der Typ Problem. Aber ein Tisch war für mich geschaffen, die in SQL Server Management Studio, die vertreten die Tabelle habe ich versucht zu importieren, die aus der access-Tabelle. Es hatte die richtigen Spalten und die dazugehörigen Datentypen.
Also, was ich Tat, war ich mit der rechten Maustaste in der Tabelle, um zu gehen, in der design-Ansicht geändert werden alle Datentypen der
DataTime
Spalten nurDate
,Dann habe ich umgestrickt das importieren von Daten verarbeiten, und die Zeilen wurden erfolgreich übertragen.
Dieser ist alt, aber ich hatte ein ähnliches Problem in meiner SSIS data flow task und hoffentlich kann jemand helfen: für mich war die Lösung, überprüfen Sie die "null-Werte Beibehalten werden von der Quelle als null-Werte in den data-flow" - option in der Flatfile-Quelle Editor-Fenster (in der Seite Verbindungs-Manager)
Fand ich, dass beim kopieren einer Datenbank von der lokalen EXPRESS auf meinem produktiven server, der die Tabellen-Definitionen wurden
smalldatetime
stattdatetime
. Im Assistenten wählen Sie die Tabellen, können Sie wählen Sie "Bearbeiten" - Mapping. Dort können Sie Ihre Daten ändern geben.