用bcp工具导入和导出批量数据(中)

日期: 2009-05-07 作者:Robert Sheldon翻译:April 来源:TechTarget中国 英文

用bcp工具导入数据   Bcp工具使得导入数据和导出一样简单。要在这部分里运行这个示例,首先就要执行下面的T-SQL脚本,在AdventureWorks数据库里创建SalesPeople表: USE AdventureWorks GO IF OBJECT_ID (N’SalesPeople’, N’U’) IS NOT NULL DROP TABLE dbo.SalesPeople GO CREATE TABLE dbo.SalesPe……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

用bcp工具导入数据

  Bcp工具使得导入数据和导出一样简单。要在这部分里运行这个示例,首先就要执行下面的T-SQL脚本,在AdventureWorks数据库里创建SalesPeople表:

USE AdventureWorks
GO
IF OBJECT_ID (N'SalesPeople', N'U') IS NOT NULL
DROP TABLE dbo.SalesPeople
GO
CREATE TABLE dbo.SalesPeople (
SalesPersonID INT IDENTITY PRIMARY KEY,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL
)

  要导出数据,你需要一个源文件从中复制数据。例如下面的命令就用了最近创建的SalesPerson.csv文件加载数据到SalesPeople表:

bcp AdventureWorks.dbo.SalesPeople in C:DataSalesPerson.csv -c -T -t,
 

  首先,你必须指定目标表,这种情况下紧跟其后的为代替out或queryout的in关键字。其次,你必须指定源文件的路径和文件名称,后跟任意可用的switch。

  在运行这一命令并查看结果时,要注意源文件如果包括售货员的ID,这些值就不能插入到SalesPersonID列。该列定义为IDENTITY列,这样我们就可以忽视源数据。要保留原始值,你就必须在命令里增加-E switch,如下面的例子中所示:


bcp AdventureWorks.dbo.SalesPeople in C:DataSalesPerson.csv -c -T -t, -E

  现在表中就包含了你想要得到的数据。

  使用格式文件

  在导入或导出数据时,你会发现源数据架构和目标数据架构不匹配。例如,文本文件中的这些列可能和目标表中的列的顺序不一致,或者说这些列的多少还不一样。你可以通过创建格式文件映射源文件和目标架构解决这个问题。我们通过以下示例看看它是如何工作的:

  假如你使用了以下命令从 vSalesPerson视图中导出数据到SalesPeople.txt文件:

bcp "SELECT LastName, FirstName, SalesPersonID FROM AdventureWorks.Sales.vSalesPerson"
queryout C:DataSalesPeople.txt -c -T -t,

  该命令使用了先前例子中同样的参数。但是注意这些列从视图中检索的顺序:LastName、FirstName、最后是SalesPersonID。

  现在假设你打算使用该文件导入数据到SalesPeople表。SalesPeople表中列的顺序和文本文件中列顺序不同。要解决这个问题,你可以创建一个格式文件将这些列从源文件映射到目的文件。以下命令说明如何创建一个格式文件:


bcp AdventureWorks.dbo.SalesPeople format nul -f C:DataSalesPeople.fmt -c -T -t,

翻译

April
April

相关推荐