Import Flat File to SQL Wizard
Applies to:
SQL Server
Azure SQL Database
Azure SQL Managed Instance
For content related to the Import and Export Wizard, see SQL Server Import and Export Wizard.
Import Flat File Wizard is a simple way to copy data from a flat file (.csv, .txt) to a new table in your database. The Import Flat File Wizard supports both comma-separated and fixed width format files. This overview describes the reasons for using this wizard, how to find this wizard, and a simple example to follow.
Why would I use this wizard?
This wizard was created to improve the current import experience leveraging an intelligent framework known as Program Synthesis using Examples (PROSE). For a user without specialized domain knowledge, importing data can often be a complex, error prone, and tedious task. This wizard streamlines the import process as simple as selecting an input file and unique table name, and the PROSE framework handles the rest.
PROSE analyzes data patterns in your input file to infer column names, types, delimiters, and more. This framework learns the structure of the file and does all of the hard work so users don't have to.
Prerequisites
This feature is available on SQL Server Management Studio (SSMS) v17.3 or later. Make sure you are using the latest version. You can find the latest version here.
Getting Started
To access the Import Flat File Wizard, follow these steps:
- Open SQL Server Management Studio.
- Connect to an instance of the SQL Server Database Engine or localhost.
- Expand Databases, right-click a database (test in the example below), point to Tasks, and click Import Flat File above Import Data.
To learn more about the different functions of the wizard, refer to the following tutorial:
Tutorial
For the purposes of this tutorial, feel free to use your own flat file. Otherwise, this tutorial is using the following CSV from Excel, which you are free to copy. If you use this CSV, title it example.csv and make sure to save it as a csv in an easy location such as your desktop.
Overview:
Step 1: Access Wizard and Intro Page
Access the wizard as described here.
The first page of the wizard is the welcome page. If you do not want to see this page again, feel free to click Do not show this starting page again.
Step 2: Specify Input File
Click browse to select your input file. At default, the wizard searches for .csv and .txt files. PROSE will detect if the file is comma-separated or fixed-width format regardless of file extension.
The new table name should be unique, and the wizard does not allow you to move further if not.
Step 3: Preview Data
The wizard generates a preview that you can view for the first 50 rows. If there are any problems, click cancel, otherwise proceed to the next page.
Step 4: Modify Columns
The wizard identifies what it believes are the correct column names, data types, etc. Here is where you can edit the fields if they are incorrect (for example, data type should be a float instead of an int).
Columns where empty values are detected will have "Allow Nulls" checked. However if you expect nulls in a column and "Allow Nulls" is not checked, here is where you can update the table definition to allow nulls in one or all columns.
Proceed when ready.
Step 5: Summary
This is simply a summary page displaying your current configuration. If there are issues, you can go back to previous sections. Otherwise, clicking finish attempts the import process.
Step 6: Results
This page indicates whether the import was successful. If a green check mark appears, it was a success, otherwise you may need to review your configuration or input file for any errors.
Troubleshooting
The Import Flat File Wizard detects the data types based on the first 200 rows. In scenarios where data further in the flat file does not conform to the automatically detected data types, an error will occur during import. The error message would be similar to the following:
Error inserting data into table. (Microsoft.SqlServer.Prose.Import)
The given value of type String from the data source cannot be converted to type nvarchar of the specified target column. (System.Data)
String or binary data would be truncated. (System.Data)
Tactics to alleviate this error:
- Expanding the data type size(s) in the Modify Columns step, such as the length of a nvarchar column, may compensate for variations in the data from the remainder of the flat file.
- Enabling error reporting in the Modify Columns step, especially by a smaller number, will reveal which row(s) in the flat file contain data that does not fit the selected data types. For example, in a flat file where the second row introduces an error, running the import with error reporting with a range of 1 provides a specific error message. Examining the file directly at the location can provide more targeted changes to the data types based on the data in the identified rows.
Error inserting data into table occurred while inserting rows 1 - 2. (Microsoft.SqlServer.Prose.Import)
The given value of type String from the data source cannot be converted to type float of the specified target column. (System.Data)
Failed to convert parameter value from a String to a Double. (System.Data)
Currently, the importer uses encoding based on the system's active code page. On most machines this defaults to ANSI.
Learn More
Learn more about the wizard.
- Learn more about importing other sources. If you are looking to import more than flat files, see SQL Server Import and Export Wizard.
- Learn more about connecting to flat file sources. If you are looking for more information about connecting to flat file sources, see Connect to a Flat File Data Source.
- Learn more about PROSE. If you are looking for an overview of the intelligent framework used by this wizard, see PROSE SDK.