Antworten:
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
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
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).
Doppelklicken Sie auf den Datenfluss, um ihn zu bearbeiten, und doppelklicken Sie auf die Datenquelle, um die Option "Nullen beibehalten" zu aktivieren
Doppelklicken Sie dann auf das Ziel, um die Eigenschaften anzuzeigen, und ändern Sie die Eigenschaft "Keep nulls" in true.
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
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.
Ich sehe, dass Sie versuchen, den Assistenten zum Importieren von Daten zu verwenden. Möglicherweise ist es besser, die Tabelle manuell mit den gewünschten Spaltendefinitionen zu erstellen und BULK INSERT
die Daten mit dem Befehl T-SQL zu importieren.
USE tempdb;
CREATE TABLE dbo.TestSource
(
SomeNumber INT NULL
);
Ich habe eine Nur-Text-Beispieldatei mit dem Namen erstellt, C:\temp\test.txt
die die folgenden Zeilen enthält:
1
3
4
6
7
9
Diese Anweisung importiert die Zeilen aus der Textdatei in die TestSource
Tabelle:
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;
Wenn Sie mindestens SSMS v 17.3 haben und in eine neu erstellte Tabelle importieren, können Sie hierfür den Assistenten zum Importieren von Flatfiles in SQL verwenden .
Ausführen gegen die CSV-Datei in Toms Antwort.
Die resultierende Tabelle sieht aus wie