怎样实现直接用bcp命令在远程服务器导入导出文件到本地?

syitssa 2006-11-27 05:44:41
因为在自己电脑上是注册的远程服务器
编写代码如下:
EXEC master..xp_cmdshell 'bcp sjfxz..tp22 out C:\a.txt -c -S"GZYANGHUA1-3" -U"shenyuan" -P"123"'

可以运行,但是文件是直接写到服务器的c盘,现在 将 路径:C:\a.txt更改为
\\XX.XX.XX.XX\temp\a.txt
却实现不了,XX.XX.XX.XX是本机的ip地址,temp是共享的可写目录

请大侠指教 ^_^
...全文
531 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
syitssa 2006-11-30
  • 打赏
  • 举报
回复
抑或fcandy说的下面的这种办法:
1.建excel
2.insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\1.xls',sheet1$)
select id from userlist

??????
莫非这样就能识别的是本机吗?
感觉fcandy写的 insert select .. from openrowset 是 从本地文件往表里面插数,这
不是我所要解决的问题,
关于插数,倒是可以用 bulk insert来解决,例如:
BULK INSERT Northwind.dbo.[Order Details]
FROM 'f:\orders\lineitem.tbl'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ':\n',
FIRE_TRIGGERS
)

这样 识别的 'f:\orders\lineitem.tbl' 是本地的文件,ms sql真是很奇怪,难道设计的时候没考虑这些吗?就这些而言,informix设计的倒是比较合理,oracle倒数也是挺麻烦,不用工具,还要写配置文件,运行脚本来倒这样
syitssa 2006-11-30
  • 打赏
  • 举报
回复
我觉得这个问题更适合这样做,
在你本地建一个同结构的表, 使用 insert select .. from openrowset 方法更适
???


不是太明白这个是什么意思,是说的从远程服务器的库表直接取数到本地sql服务器的库表里面吗?
其实还有一个办法,但是我觉得意义不大,我是要一步到位,是为了给那些不想麻烦的人一次搞定,其实注册个本地的server ,然后在里面打bcp命令,运行相同的命令,可以达到load到本地的效果,例如上次的命令
EXEC master..xp_cmdshell 'bcp sjfxz..tp22 out C:\a.txt -c -S"GZYANGHUA1-3" -U"shenyuan" -P"123"' 在查询分析器里面连接自己开sql server,
因为是在本机服务器上运行的,所以写文件是写到自己的机器硬盘上,取数则是在远程服务器上取的。。。
syitssa 2006-11-29
  • 打赏
  • 举报
回复
刚问过了,这边没有用的域 。。。
如果不用net use的话
不知道还有没其他办法,
我设置的共享,就是 不管谁也好,同一个网段,都可以直接登陆
也没见提示用户名和密码,如果可以通过输入共享用户名和密码的方式当然更好
稍微安全一点,但是看了帮助,也没发现哪个参数可以用来做到这个事情
syitssa 2006-11-29
  • 打赏
  • 举报
回复
2楼说的不错,不过具体还是不知道怎么做,不过可以考虑在同一个域里面做成这个事情
服务器和我的机器ip网段是一样,都是xx。xx。xx。多少多少
但是工作组我刚看了是不一样,莫非说的域,就是要隶属同一个工作组吗?
现在没服务器的密码,看不到那边的工作组,因此还是想在这里请教一下这个问题
^_^
感觉 2楼说的应该可以实现
^_^
3楼也多谢支持啊,不知道仁兄是怎么解决了,还是用工具导入导出吗?
fcuandy 2006-11-29
  • 打赏
  • 举报
回复
windows局域网, 当你在client1上通过局域网访问client2时,系统尝试使用 你在client1上login时的帐户和密码去访问client2, 比如, 两台机器一样的用户名和密码那么不会出现密码提示框.
或者被访问机器开了guest. 或是在域用中域用户进行访问.
dreamer001 2006-11-29
  • 打赏
  • 举报
回复
共享可写目录也有权限问题.
共享是针对用户的,即使是guest.

建议在使用bcp前先使用 xp_cmdshell运行 net use来建立网络会话.当然,如果是在同一域中,你用域用户访问自然不需要.

可不可以详细讲解一下啊?
fcuandy 2006-11-29
  • 打赏
  • 举报
回复
我觉得这个问题更适合这样做,
在你本地建一个同结构的表, 使用 insert select .. from openrowset 方法更适合
lei_1700 2006-11-29
  • 打赏
  • 举报
回复
也碰到这个问题,关注!
tmc1703 2006-11-27
  • 打赏
  • 举报
回复
1楼讲的不错,大概一个月前我也碰到楼主的问题。最终换了别的方法做的,没用SQL来导。
fcuandy 2006-11-27
  • 打赏
  • 举报
回复
共享可写目录也有权限问题.
共享是针对用户的,即使是guest.

建议在使用bcp前先使用 xp_cmdshell运行 net use来建立网络会话.当然,如果是在同一域中,你用域用户访问自然不需要.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧