it-swarm.com.de

So importieren Sie Leerzeichen als Nullen anstelle von Nullen, während Sie txt mit dem Assistenten importieren

Ich verwende den Import Wizard, um eine Textdatei zu laden, und benötige Leerzeichen in Ganzzahlfeldern, um Nullen zu sein, aber nur Nullen werden eingefügt.

Wie importiere ich es richtig?

8
Vladimir

Leider ist dies nicht möglich, wenn Sie darauf bestehen, den Assistenten zu verwenden. Sie müssten das Paket mit Visual Studio bearbeiten.

Beim Bearbeiten des Pakets in Visual Studio gibt es die Option "Nullen behalten"

Angesichts dieser CSV-Datei:

StringField,IntField
a,1
b,5
c,
d,6
e,
f,8
g,
h,
i,10
j,

und diese Tabellendefinition

CREATE TABLE [dbo].[NullTest](
    [StringField] [varchar](50) NULL,
    [IntField] [int] NULL
) ON [PRIMARY]

GO

Wenn Sie die Daten mit dem Assistenten importieren, werden die Nullen in Nullen konvertiert

Wenn Sie jedoch am Ende des Assistenten "Paket speichern unter" anstelle von "Sofort ausführen" wie in diesem Bildschirm auswählen

(enter image description here

Die Datei kann irgendwo im Dateisystem gespeichert werden.

Wenn Sie dann ein neues Integration Services-Projekt erstellen, können Sie ein vorhandenes Paket wie dieses hinzufügen

(enter image description here

Wenn Sie zu der gerade gespeicherten Datei navigieren und sie anzeigen, wird eine Datenflussaufgabe angezeigt (Sie sehen auch eine SQL-Ausführungsaufgabe, wenn Sie die Tabelle erstellen möchten, anstatt sie an eine vorhandene anzuhängen).

(enter image description here

Doppelklicken Sie auf den Datenfluss, um ihn zu bearbeiten, und doppelklicken Sie auf die Datenquelle, um die Option "Nullen beibehalten" zu aktivieren

(enter image description here

Doppelklicken Sie dann auf das Ziel, um die Eigenschaften anzuzeigen, und ändern Sie die Eigenschaft "Keep nulls" in true.

(enter image description here

Wenn Sie dann auf den grünen Pfeil in der Symbolleiste klicken oder Debug> Debugging starten aus dem Menü auswählen, um Ihr Paket auszuführen, ist dies das Endergebnis

(enter image description here

Am Ende ist der Assistent nur ein Assistent. Es generiert ein SSIS-Paket für Sie und wählt einige Standardeinstellungen aus, leider nicht die gewünschten Standardeinstellungen.
Wenn Sie Nullen beibehalten möchten, gibt es keine andere Möglichkeit, als das Paket mit Visual Studio zu bearbeiten.

Andererseits ist es möglicherweise einfacher, das Paket einfach selbst in Visual Studio zu erstellen oder die T-SQL-Lösung von @ MaxVernon zu verwenden.

Wenn Sie mindestens SSMS v 17.3 haben und in eine neu erstellte Tabelle importieren, können Sie hierfür den Flat File to SQL Wizard importieren verwenden.

Führen Sie es gegen die CSV-Datei in Toms Antwort aus.

(enter image description here

Die resultierende Tabelle sieht aus wie

(enter image description here

6
Martin Smith

Ich sehe, dass Sie versuchen, den Wizard zum Importieren von Daten zu verwenden. Möglicherweise ist es besser, die Tabelle manuell mit den gewünschten Spaltendefinitionen zu erstellen und T-SQL BULK INSERT Zu verwenden. Befehl zum Importieren der Daten.

 USE tempdb;

 CREATE TABLE dbo.TestSource
 (
   SomeNumber INT NULL
 );

Ich habe eine Nur-Text-Beispieldatei mit dem Namen C:\temp\test.txt Erstellt, die die folgenden Zeilen enthält:

 1

 3
 4

 6
 7

 9

Diese Anweisung importiert die Zeilen aus der Textdatei in die Tabelle TestSource:

 BULK INSERT dbo.TestSource
    FROM 'C:\temp\test.txt'
    WITH (
       DATAFILETYPE = 'char',
       FIELDTERMINATOR = ',',
       KEEPNULLS
    );

Dies zeigt den Inhalt nach Abschluss des Imports:

 SELECT *
 FROM dbo.TestSource;

(enter image description here

6
Max Vernon