65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 BCP 实用程序将数据从平面文件插入 SQL

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (5投票s)

2016年6月15日

CPOL

3分钟阅读

viewsIcon

13078

通过 BCP 实用程序将数据从平面文件插入 SQL。

引言

我想解释一下 BCP 操作,以执行将平面文件数据插入 SQL 表。 最近,我遇到了一个需求,需要将客户端 CSV 格式的数据批量插入到数据库表中。我立即想到了这篇文章。你们中的一些人可能面临类似的情况,可能需要执行将数据从输入馈送文件插入到表中的操作,其中馈送文件可以是 CSV 格式、XLS 格式、TXT 格式或任何带有数据的平面格式。 我将提供逐步的步骤。

背景

为了通过 BCP 命令实用工具从任何平面文件执行 SQL 表数据插入,您应该具备:

  • 您的系统中的 BCP 实用工具(为了确认 BCP 在您的系统中是否可用,只需打开 CMD 并键入“BCP /?”。 您应该立即看到给定 BCP 命令的选项列表。)
  • 具有管理员访问权限的 SQL Server 2005/2008/2012(即,仅为了将数据插入任何表,应该在 DB 级别具有写入权限)
  • CSV 或任何平面文件(平面文件可以是 txt 或任何格式)
  • 这是一种快速、有效和高效的方式,可以将数据插入到表中,而无需 SSMS 干预,无论馈送文件是什么格式或什么样式。

Using the Code

步骤 1:具有管理员权限的 CMD

只需以“管理员”权限打开命令文件(即,以管理员身份打开)。

步骤 2:确保 BCP 实用工具的可用性

键入 BCP /? 以确保 BCP 实用工具在您的系统中可用,并且您的系统已准备好执行 BCP 操作。

步骤 3:创建表

在您的数据库中创建一个简单的表

CREATE TABLE TEST
(NAMEFIRST VARCHAR(50),
NAMELAST VARCHAR(50),
PHONE VARCHAR(50),
DISABLED NUMBER)
)

步骤 4:创建格式文件

格式文件是一个标识,它具有表数据的属性,有助于识别输入馈送文件和目标表之间的相应字段。

例如,在 "Test" 表中,我们知道 Disabled 是第 4th 列,表示为数字,但在执行 BCP 操作时,CSV 文件中提供的 "Disabled" 列的值应匹配。

请注意,如果未创建或引用格式文件,则会在 BCP 插入过程中提示用户提供数据类型、大小。

用于创建 fmt 文件的 BCP 命令

>Bcp tiso.dbo.TEST format nul -c -t, -f D:\tiso\tiso_FORMAT.fmt 
-S SW01 -Utisouser -Puser -e d:\tiso\err.txt

格式文件将通过运行上述命令自动创建,如下所示。

步骤 5:将 CSV 数据插入 SQL Server 表

现在,是时候执行数据插入了。 馈送文件(这里是 CSV 格式)应该是逗号分隔的文件,其中包含要插入到目标表中的字段列表

用于执行将 CSV 数据插入到 SQL 表中的 BCP 命令

>Bcp tiso.dbo.TEST in D:\tiso\tisobcp_test.CSV 
-f d:\tiso\tisobcp_FORMAT.fmt  -S SW01 -Utisouser -Puser -e d:\tiso\err.txt

CSV 输入馈送文件

步骤 6:SQL Server 上的验证/确认

现在,数据已成功上传到表中。

通过 BCP 实用工具执行数据插入的优点

  • 这是一种非常简单有效的数据插入方式。
  • 馈送文件可以是任何格式或任何样式,其中输入格式文件引用将有效地驱动数据插入到表中。
  • 可以在 Err.txt 文件中跟踪错误,这有助于最终用户识别和纠正任何差异。
  • 上面的 BCP 操作是通过 SQL 身份验证执行的,如提供的 -S -U-P 分别代表服务器名称、用户 ID 和密码。 如果我们需要通过 Windows 身份验证执行,只需提供 -S-T,分别代表服务器和受信任模式。

干杯!!

© . All rights reserved.