【发布时间】:2015-12-05 14:10:43
【问题描述】:
根据一些建议,我使用bcp Utility 将SQL server 表写入.cvs 文件,以便稍后将数据传输到具有相同结构的informix 表。
我的 SQLServer 存储过程:
ALTER PROCEDURE [dbo].[TestCVS]
AS
BEGIN
declare @sql nvarchar(4000)
select @sql = 'bcp "select * from ML..gmp4vacationbalance" queryout c:\ss\Tom.cvs -c -t, -T -S' + @@servername
exec master..xp_cmdshell @sql
END
我有四个关于这个程序的问题:
1-如何允许此过程写入remote server而不是本地服务器@@servername,因为允许特定服务器访问我的sql服务器是不安全的?
2-如何允许在特定条件下过滤查询: 说我想写这样的查询:
select * from ML..gmp4vacationbalance where balance_date = @date AND emp_num = @empNum
3-当我执行程序时,我会得到这样的数据:
为什么第三列出现这样的损坏,是varchar desc 写成arabic?
4-当我想像这样用管道|而不是逗号,分隔时
select @sql = 'bcp "select * from ML..gmp4vacationbalance" queryout c:\ss\Tom.cvs -c -t| -T -S' + @@servername
我收到以下错误:
【问题讨论】:
-
至少我会在远程服务器中运行 bcp 命令并从那里连接到 SQL Server。当您不必处理 xp_cmdshell 时,处理错误通常要简单得多。
-
你需要逃跑 |因为它在命令行上有特殊含义,试试^|
-
@JamesZ : 你能在回答中解释更多吗
标签: sql sql-server informix bcp windows-server