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






4.80/5 (5投票s)
通过 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
,分别代表服务器和受信任模式。
干杯!!