There are many common daily tasks that (SSIS) SQL Server Integration Services implements with minimal effort. These tasks can be done by adding a few SSIS tasks, data flows, and containers. In this blog series I am going to explore some of these simple tasks and how I go about implementing them. Importing data from flat text files into a data store definitely qualifies as simple task using SSIS. In this blog post I will show how to import pipe-delimited files into staging tables using SSIS.
Prerequisites
A database table called FileDetails is needed, which matches the data that we are going to import from the pipe delimited flat text files.
Pipe Delimited Flat File Sample
FirstName|LastName|Email|Phone Kieran|Merrill|dis.parturient.montes@eutellusPhasellus.org|(852) 339-2795 Dai|Figueroa|hendrerit.id.ante@adipiscingenimmi.co.uk|(553) 107-6735 Priscilla|Morrow|faucibus@Mauriseu.ca|(190) 642-4764 Raphael|Kent|nisi.Aenean.eget@hendreritaarcu.net|(262) 161-4288 Whilemina|Leblanc|Curabitur.dictum.Phasellus@quistristique.edu|(420) 952-2809 Kerry|Morrow|gravida@nonummy.org|(633) 115-7473 |
File Details
The File Details table is the staging table for all records imported. Each staging table will be representative of the data that is being imported. Being that the data being imported us user specific, the following columns are relevant; name, email, phone, etc…
CREATE TABLE dbo.FileDetails ( FileDetailsID INT IDENTITY(1, 1) NOT NULL , FirstName NVARCHAR(100) NOT NULL , MiddleName NVARCHAR(100) NULL , LastName NVARCHAR(100) NOT NULL , Email NVARCHAR(100) NOT NULL , Phone NVARCHAR(25) NULL , FileImportID INT NOT NULL , CONSTRAINT PK_FileDetails PRIMARY KEY CLUSTERED (FileDetailsID ASC) ) ON [PRIMARY]; |
File Import SSIS package
The File Import SSIS package will make a connection to a flat text file, read the contents of the flat text file into a data stream, map the results to a database connection and write the contents of the stream to a specified database table.
Let’s start by creating a new SSIS Package and renaming it to FileImport.dtsx.
We will need to setup an OLE DB connection to query the FileImport and FileDetails tables as well as a Flat File connection to read the pipe-delimited flat text file data.
OLE DB Connection
Flat File Connection
In the general section of the flat file connection manager editor we will select a file that is representative of the files that will be imported. The pipe delimited file we are going to import may contain Unicode characters and has column names in the header row, so we will need to select the “Unicode” and “Columns names in the first data row” options.
In the columns section of the flat file connection manager editor we will select the Vertical Bar {|} value for the Column delimiter drop down list, because the flat text file is pipe delimited.
In the Advanced section of the flat file connection manager editor we will need to adjust each of the columns to match the data size and type for the corresponding database column.
Package Tasks
The File Import package will use a single Data Flow task to import the file data. This Data Flow task “DFT – Import File data into the File Details staging table” implements the file import process, using a Flat File Source and OLE DB Destination.
Data Flows
DFT – Import File data into the File Details staging table
This data flow implements two components a Flat File Source and OLE DB Destination which are necessary for importing data between the flat text file and the database table.
FF_SRC – The flat text file source data
This data source will define the connection manager and the output columns from the flat text file into a data stream. This data stream will provide the input to the OLE DB Destination to write data to the files. On the connection manager section select the FileData flat file connection manager.
On the Columns section we will output all four columns. As a best practice, if you are not going to use one of the columns in the data flow, its best to deselect it hear, it will takes up less space on your data stream and increase the performance of your package.
OLE_DEST – The File Import staging table destination
This OLE DB destination will define the details of the destination of our data into the database tables and which data stream columns will be mapped to which database columns. On the connection manager section we will select our OLE DB Connection and the Data Access mode of Table of view – fast load. Select [dbo].[FileDetails] as the name of the table or view.
On the Mappings section, if the OLE DB Destination could match the names, lines will be drawn connecting the two columns. If any columns are not automatically mapped, either drag and drop the column on the corresponding columns that should be mapped, or select the corresponding column value from the Input Column dropdown list.
After the package is executed the data will be loaded into the FileDetails staging table. In a future Simple SSIS blog post I will show how to loop through a directory of files and improve on this import by capturing debugging information and import statistics.