SQL Server的导出导入方式有:在SQL Server中提供了导入导出的界面操作。
--
还没有解决的问题
-- 1:使用BCP命令时如果导出的字段为空想替换为其它描述(比如替换成NULL)如何办?
-- 2:使用 case when 时就会出现1023字节的问题,那有没其它办法解决呢?
-- 3:使用BCP命令导出大数据量时出现错误:查询提示超过了最大目录缓冲区 1023 字节(2164 字节输入)。
-- 备注
-- 1:已经使用了Coalesce代替case when,但是还是超出字符数了。
-- 2:对以网上说的放到Temp数据库中、中间表,这些?但是数据表几十G了,还能这样?
-- 整个表导出(out)
bcp 数据库名.dbo.表名 out c:\currency.txt - S"数据库实例" - U"用户" - P"密码" - c
-- 使用SQL语句导出(queryout)
bcp " select * from 数据库名.dbo.表名" queryout c:\currency.txt - S 数据库实例 - U"用户" - P"密码" - c
-- 设置字段分隔符和行分隔符(-c -t"," -r"\n"),不想输入字段类型等请配合-c一起使用
bcp " select * from 数据库名.dbo.表名" queryout c:\currency.txt - S 数据库实例 - U"用户" - P"密码" - c - t"," - r"\n"
-- 指定每批导入数据的行数、指定服务器发出或接收的每个网络数据包的字节数(-k -b5000 -a65535)
bcp " select * from 数据库名.dbo.表名" queryout c:\currency.txt - S 数据库实例 - U"用户" - P"密码" - c - t"," - r"\n" - k - b5000 - a65535
-- 在查询分析器上执行(EXEC master..xp_cmdshell)
EXEC master..xp_cmdshell ' bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c '
-- 把SQL语句生成一个.sql文件,然后调用
-- 注:路径的文件夹名称中间不能有空格
exec master..xp_cmdshell ' osql -S 数据库实例 -U 用户 -P 密码 -i C:\cmdshellTest.sql '
-- 将数据导入到currency表中
EXEC master..xp_cmdshell ' bcp 数据库名.dbo.表名 in c:\currency.txt -c -T '
-- 导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。
EXEC master..xp_cmdshell ' bcp 数据库名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T '
-- 1:使用BCP命令时如果导出的字段为空想替换为其它描述(比如替换成NULL)如何办?
-- 2:使用 case when 时就会出现1023字节的问题,那有没其它办法解决呢?
-- 3:使用BCP命令导出大数据量时出现错误:查询提示超过了最大目录缓冲区 1023 字节(2164 字节输入)。
-- 备注
-- 1:已经使用了Coalesce代替case when,但是还是超出字符数了。
-- 2:对以网上说的放到Temp数据库中、中间表,这些?但是数据表几十G了,还能这样?
-- 整个表导出(out)
bcp 数据库名.dbo.表名 out c:\currency.txt - S"数据库实例" - U"用户" - P"密码" - c
-- 使用SQL语句导出(queryout)
bcp " select * from 数据库名.dbo.表名" queryout c:\currency.txt - S 数据库实例 - U"用户" - P"密码" - c
-- 设置字段分隔符和行分隔符(-c -t"," -r"\n"),不想输入字段类型等请配合-c一起使用
bcp " select * from 数据库名.dbo.表名" queryout c:\currency.txt - S 数据库实例 - U"用户" - P"密码" - c - t"," - r"\n"
-- 指定每批导入数据的行数、指定服务器发出或接收的每个网络数据包的字节数(-k -b5000 -a65535)
bcp " select * from 数据库名.dbo.表名" queryout c:\currency.txt - S 数据库实例 - U"用户" - P"密码" - c - t"," - r"\n" - k - b5000 - a65535
-- 在查询分析器上执行(EXEC master..xp_cmdshell)
EXEC master..xp_cmdshell ' bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c '
-- 把SQL语句生成一个.sql文件,然后调用
-- 注:路径的文件夹名称中间不能有空格
exec master..xp_cmdshell ' osql -S 数据库实例 -U 用户 -P 密码 -i C:\cmdshellTest.sql '
-- 将数据导入到currency表中
EXEC master..xp_cmdshell ' bcp 数据库名.dbo.表名 in c:\currency.txt -c -T '
-- 导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。
EXEC master..xp_cmdshell ' bcp 数据库名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T '
在使用命令xp_cmdshell的时候需要设置权限:
/*
MSsql2005 如何启用xp_cmdshell
默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤
*/
-- 允许配置高级选项
EXEC sp_configure ' show advanced options ' , 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure ' xp_cmdshell ' , 1
GO
-- 重新配置
RECONFIGURE
GO
-- 执行想要的xp_cmdshell语句
Exec xp_cmdshell ' query user '
GO
-- 用完后,要记得将xp_cmdshell禁用(出于安全考虑)
-- 允许配置高级选项
EXEC sp_configure ' show advanced options ' , 1
GO
-- 重新配置
RECONFIGURE
GO
-- 禁用xp_cmdshell
EXEC sp_configure ' xp_cmdshell ' , 0
GO
-- 重新配置
RECONFIGURE
GO
默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤
*/
-- 允许配置高级选项
EXEC sp_configure ' show advanced options ' , 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure ' xp_cmdshell ' , 1
GO
-- 重新配置
RECONFIGURE
GO
-- 执行想要的xp_cmdshell语句
Exec xp_cmdshell ' query user '
GO
-- 用完后,要记得将xp_cmdshell禁用(出于安全考虑)
-- 允许配置高级选项
EXEC sp_configure ' show advanced options ' , 1
GO
-- 重新配置
RECONFIGURE
GO
-- 禁用xp_cmdshell
EXEC sp_configure ' xp_cmdshell ' , 0
GO
-- 重新配置
RECONFIGURE
GO
或者使用图形界面:
参考文献
本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/478783,如需转载请自行联系原作者