sqlserver 数据导入导出
上一篇 /
下一篇 2011-12-26 15:58:44
/ 个人分类:数据库
今天想导一批文本数据到
数据库里
于是就用到了bcp和bulk insert
bcp其实windows的自带工具,只不过用sql用cmdshell来调用而已
但是sqlserver默认是关闭cmd_shell的,因为安全问题,所以使用时要先打开cmdshell
1 EXEC sp_configure 'show advanced options', 1
2
RECONFIGURE
3 EXEC sp_configure 'xp_cmdshell', 1
4
RECONFIGURE |
然后就可以用cmdshell来导入数据了
EXEC master..xp_cmdshell 'BCP database.schema.table in filepath -c -Sservername -Uusername -Ppassword'
用的时候碰到几个问题:
1 如果-S参数不带的话,会默认为本地的数据库服务器,如果本地有多个数据库的话,会报错,要写上具体的服务器名\实例名
2 导入数据时,有的数据格式不对,会造成错误,默认的错误数达到10次,命令就会停止运行,造成后面的数据导入不成功 ,可以使用-m 最大错误数
3 -e这个参数,可以生成错误
日志,知道哪些数据没有导入成功,使用时要指定错误文件的完整路径
bulk insert如果导入的数据中,有分隔符,用bcp就不太好用了,比如字段分隔符为#
这个时候可以用bulk insert,它可以自定义字段分隔符和行终止符,默认的都为/t为字符分隔符,/n为行终止符
BULK INSERT database.schema.table
FROM 'filepath'
WITH
(
FIELDTERMINATOR = '#',
ROWTERMINATOR = '/n',
)
同样bulk insert也有错误数限制,默认为10,可以使用MAXERRORS参数来设定最大错误数
补充点:
如果是bcp导入的话,错误次数超过默认数,导入停止,但是已导入的数据会保存,而bulk insert 错误次数超过默认数,会回滚,一条数据也不会导入
收藏
举报
TAG: