最近做系统,竟然用到sqlserver,以前很少用sqlserver,搞的累死。数据库TourCard里面有sysreport的表,专门存放报表文件,因为在发布给客户的时候需要更新这张报表,只能把该表的信息导出来在导进去。但是表中有个ntext大字段类型,不能用select insert。测试建了一张sysreport1的表。
用到的方法主要是bcp的导入导出,说到这个的google的搜索,网上的信息差不多全是转载的,估计都没试验过,写出来的代码,连单引号都是中文格式下的,害的我搞了半天才测出来。
以下是我的房阿飞
EXEC master..xp_cmdshell 'bcp "Select * from TourCard..SysReport where name=""CardStockInReport""" queryout c:\1.txt -c -S127.0.0.1 -Usa -P'
EXEC master..xp_cmdshell 'bcp TourCard..SysReport1 in "c:\1.txt" -c -S127.0.0.1 -Usa -P'
EXEC master..xp_cmdshell 'bcp "Select * from TourCard..SysReport where name=""TellerConnectReport""" queryout c:\1.txt -c -S127.0.0.1 -Usa -P'
EXEC master..xp_cmdshell 'bcp TourCard..SysReport1 in "c:\1.txt" -c -S127.0.0.1 -Usa -P'
测试过了,导出的时候可以不加where条件是可以全部导出的,但是导入的时候就只能导入第一条数据,然后就报“Error = [Microsoft][ODBC SQL Server Driver]在 BCP 数据文件中遇到的意外的 EOF
”的错误!
输出信息为:
NULL
开始复制...
SQLState = 22001, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]字符串数据,右截位
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]在 BCP 数据文件中遇到的意外的 EOF
NULL
已复制了 1 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共 15
NULL
所以我只能改成一条一条导出,一条一条导入的笨蛋方法了。
再次也希望那位高手能帮我解决一下这个只能导入一条的问题!小弟不甚感谢!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/794934/viewspace-624909/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/794934/viewspace-624909/