MSSQL快捷导入CSV文件简易指南

1. 前言

在MSSQL中,快速导入CSV文件是许多数据处理任务中的一个基本需求。

2. 准备工作

2.1 确认CSV文件格式

在导入CSV文件之前,请确保文件符合MSSQL所要求的格式。我们需要确保CSV文件的列与数据库表中的列匹配,每一行数据都要以回车符或者其他行终止符结束。

2.2 创建数据库表

在导入CSV文件之前,需要先创建一个数据库表来存储CSV数据。通过SQL Server Management Studio或者其他工具,可以方便地创建数据库表。

例如,我们可以创建一个名为“example_table”的数据表,其中包含三个列:id、name和age。

CREATE TABLE example_table (

id INT,

name VARCHAR(50),

age INT

);

2.3 创建格式文件

要导入CSV文件中的数据,需要创建一个格式文件,它描述了CSV文件中数据的格式和位置。

格式文件可以用bcp.exe或者bcp API自动生成,但是,我们也可以手动创建格式文件,在数据格式严格的情况下,这种方法更可靠。

以下是手动创建格式文件的示例:

10.0

3

1 SQLCHAR 0 12 "," 1 id ""

2 SQLCHAR 0 50 "," 2 name SQL_Latin1_General_CP1_CI_AS

3 SQLCHAR 0 12 "\r\n" 3 age ""

该格式文件包含三行,第一行指定了MSSQL版本,第二行指定了列数,第三行指定了每个列的格式、大小和位置。在这个例子中,我们使用了SQLCHAR类型并指定了列的大小、列分隔符和行终止符。

3. 导入CSV文件

3.1 使用bcp命令导入CSV文件

bcp.exe是MSSQL提供的一个命令行工具,它可以快速地导入和导出大量数据。我们可以使用以下命令将CSV文件中的数据导入到“example_table”表:

bcp example_table in C:\data\example.csv -f C:\data\format.fmt -T

在此命令中,“in”表示导入现有文件,后面的参数是CSV文件的路径,“-f”参数是格式文件的路径,“-T”表示使用当前Windows帐户的身份验证。

3.2 使用OPENROWSET导入CSV文件

OPENROWSET语句可以在查询中直接访问外部数据。我们可以使用以下语句将CSV文件中的数据导入到“example_table”表:

INSERT INTO example_table (id, name, age)

SELECT id, name, age

FROM OPENROWSET('MSDASQL',

'Driver={Microsoft Text Driver (*.txt; *.csv)};

DefaultDir=C:\data;

Extended Properties="text;HDR=NO;FMT=Delimited"',

'SELECT * FROM example.csv');

在此例中,我们使用“MSDASQL”作为提供程序,使用Microsoft Text驱动程序连接文本文件,使用文本文件的属性描述CSV文件,并指定表“example_table”将接收导入数据。

3.3 使用bulk insert命令导入CSV文件

BULK INSERT语句是将数据插入表的快速方法,它使用格式文件而不是列列表。我们可以使用以下命令将CSV文件中的数据导入到“example_table”表:

BULK INSERT example_table

FROM 'C:\data\example.csv'

WITH (FORMATFILE = 'C:\data\example.fmt',

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n',

TABLOCK);

在此命令中,“FIELDTERMINATOR”指定了列分隔符,“ROWTERMINATOR”指定了行终止符。

4. 结论

通过使用bcp.exe、OPENROWSET或者bulk insert,可以轻松地将CSV文件导入到MSSQL数据库中。确保格式文件和CSV文件都具备严格的格式要求,可以避免许多常见的错误和问题。

数据库标签