在本文中,我们将介绍在 SQL 服务器中使用 T-SQL 命令从 csv 文件批量插入数据。并且还将覆盖方式更有用,更方便地执行此类操作。让我们一一讨论。
介绍 :
有时,我们必须将 .csv 文件中的数据批量插入到 SQL Server 数据库中。我们可以使用 SSMS(SQL Server Management Studio)中的 GUI 界面从 Excel、CSV 等文件中导入数据。如果我们有数百万的数据要导入,那么上面的工作将是一项耗时的任务,现在您将看到如何处理此类操作。
笔记 –
需要 INSERT 和 ADMINISTER BULK OPERATIONS 权限。
替代方法:
在这里,在本文中,我们将通过几行 T-SQL 命令提供一种更快的替代方案。
BULK INSERT ..
FROM ''
WITH
(
-- input file format options
[ [ , ] FORMAT = 'CSV' ]
[ [ , ] FIELDQUOTE = 'quote_characters']
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] ROWTERMINATOR = 'row_terminator' ]
)]
)
最常用的输入参数如下。
- 现场终结者 – ‘
‘field_terminator’ 用作字段之间的分隔符。默认字段终止符是 \t(制表字符)。 - ROWTERMINATOR –
‘row_terminator’ 用于指定行的结尾。默认的行终止符是\ r \ n(字符)。
将 CSV 文件导入 SQL 表:
在这里,我们将讨论将 CSV 文件导入 SQL Server 中的表。考虑下面给出的 CSV 文件,或者您可以使用自己的 csv 文件来执行此操作。让我们尝试将一个 csv 文件导入到 SQL Server 中的 SQL 表中。
现在,让我们创建 SQL 表来存储上述数据。
创建表 –
这里。我们将根据 csv 文件记录创建表架构。
USE [Test]--Database name
CREATE TABLE [dbo].[Employee](
[Emp ID] bigint primary key,
[First Name] [varchar](50) NULL,
[Last Name] [varchar](50) NULL,
[Salary] bigint,
[City] [varchar](50)
)
批量插入 –
现在让我们将文件批量插入到 Employee SQL 表中:
BULK INSERT [Test].[dbo].[Employee]
FROM 'C:\data\employee_data.csv'
WITH (FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR='\n' );
输出 –
执行上述操作后,我们可以看到记录已经插入了几行代码到 Employee 表中,如下所示。
参考 :
要获取有关输入格式选项的更多信息,请访问 https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017#input -文件格式选项。