文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用bcp的一些问题

使用bcp的一些问题

时间:2010-12-22  来源:那个傻瓜

xml和非xml的命令区别: -x

A. 为本机数据创建非 XML 格式化文件
bcp AdventureWorks2008R2.HumanResources.Department format nul -T -n -f Department-n.fmt

B. 为字符数据创建非 XML 格式化文件
bcp AdventureWorks2008R2.HumanResources.Department format nul -c -f Department-c.fmt -T
D. 为 Unicode 字符数据创建非 XML 格式化文件
bcp AdventureWorks2008R2.HumanResources.Department format nul -T -w -f Department-w.fmt


A. 为字符数据创建 XML 格式化文件
bcp AdventureWorks2008R2.HumanResources.Department format nul -c -x -f Department-c..xml –t, -T
B. 为本机数据创建 XML 格式化文件
bcp AdventureWorks2008R2.HumanResources.Department format nul -x -f Department-n..xml -n -T

 

跳过数据文件中的某些字段

(1)使用如下方法(先生成数据视图的方式)可以跳过数据文件中的某些字段:

 

insert student_bcpSELECT ID,age 
FROM OPENROWSET(
BULK 'D:\student.txt',
formatfile
= 'd:\student.xml' ) s

 

如上所示,可以使用生成的xml模板,通过openrowset只选择其中的2列(其实student.txt中有3列),然后进行输入。
此种方式也可以使用非xml的模板。

如果使用 XML 格式化文件,则当通过 bcp 命令或 BULK INSERT 语句直接向表导入时,无法跳过列。

 
(2)
使用非xml的模板,可以跳过表中的某些列,但是不能跳过数据文件中的列,就是说数据文件列顺序必须和模板文件列顺序一样。
原模板:
9.0
3
1       SQLCHAR       0       12      "\t"     1     ID           ""
2       SQLCHAR       0       20      "\t"     2     name         Chinese_PRC_CI_AS
3       SQLCHAR       0       5       "\r\n"   3     age          ""

修改模板1:
修改后跳过中间列name,这样表中的name为空,好像没有很多用处。注意msdn里说第二列"\t"应该是"",但实验结果应该是"\t"才行
9.0
3
1       SQLCHAR       0       12      "\t"     1     ID           ""
2       SQLCHAR       0       0        "\t"      0     name         ""
3       SQLCHAR       0       5       "\r\n"   3     age          ""

然后使用如下命令或者bcp,虽然student_bcp里有3列,但是只是输入了ID和age列,name列为空。

BULK INSERT student_bcp 
FROM 'd:\student.txt'
WITH (FORMATFILE = 'd:\student1.fmt');
GO


修改模板2:直接将数据文件中的第二列映射到表中的第3列(表中第三列为name),第3列映射到表中第四列。
9.0
3
1       SQLCHAR       0       12      "\t"     1     ID           ""
2       SQLCHAR       0       20      "\t"     3     name         Chinese_PRC_CI_AS
3       SQLCHAR       0       5       "\r\n"   4     age          ""


可以使用bcp, bulk insert 或者openrowset来进行数据的导入。

 

一个错误

xp_cmdshell'bcp Hot.dbo.student format nul -f d:\student.fmt -c  -Ssss\aaaa -Uxxx -Pxxxx'


无法生成文件。
发生以下错误:
[Error][Microsoft][Native]Error = [Microsoft][SQL Native Client]无法打开 BCP 主数据文件

使用如下命令:
EXEC xp_cmdshell 'ECHO %USERDOMAIN%\%USERNAME%'
返回 :NT AUTHORITY\NETWORK SERVICE

然后在配置管理器(configuration manager)里面的SQL server2005服务里打开,看到登陆内置账号为Network service,
改成local system问题解决。 不知道还有没有其他办法?

 


 

 

 

相关阅读 更多 +
排行榜 更多 +
宝宝情商养成宝宝巴士

宝宝情商养成宝宝巴士

休闲益智 下载
燥热手机版

燥热手机版

飞行射击 下载
巨人狙击手安卓版

巨人狙击手安卓版

飞行射击 下载