【疑惑】关于BCP的导入导出

feixianxxx 2009-07-20 09:12:33
加精
--第一次接触BCP
不太会。
比如说 我想将TEST数据库下的TB表导出到C:\tb.txt
我是这么在DOS里写的
bcp test.dbo.tb out c:\tb.txt -c-t
可是DOS里很无语。。 跟我要密码。。。 谁帮我看下 这个密码是什么问题
我是windows身份验证不需要密码吧。。
另外 如果我导出成功了。。
我想再把数据倒回去。。怎么弄
...全文
1662 63 打赏 收藏 转发到动态 举报
写回复
用AI写文章
63 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingyicz 2009-07-26
  • 打赏
  • 举报
回复
呵呵 我以前也遇到过这种情况 !!就是实例不对 哈哈!
hanyangjian 2009-07-24
  • 打赏
  • 举报
回复
xuexi
wuhaiyangdh 2009-07-24
  • 打赏
  • 举报
回复
################
都厉害啊!学习
################
zdz72113 2009-07-23
  • 打赏
  • 举报
回复
bcp 对应 fulk
zzmoutmans 2009-07-23
  • 打赏
  • 举报
回复
回帖是一种美德!
wjwboy 2009-07-22
  • 打赏
  • 举报
回复
晕,大家为什么都搞的这么复杂呀。

bcp "数据库名.dbo.表名" out "表名.txt" -c -S. -U"sa" -P"密码"

bcp "数据库名.dbo.表名" in "表名.txt" -c -S. -U"sa" -P"密码"
feixianxxx 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 chenyongpan11 的回复:]
告诉你一个存储过程:
CREATE PROCEDURE writeInfo
@info varchar(8000),--要写入的信息的内容
@fName varchar(8000),--要写入信息的文件的文件名。
@Append int=0--,是否追加到现有文件。0,创建新的文件,1,追加到现有文件。
as
declare @tmpFile varchar(8000)--临时文件
declare @cmd varchar(8000)--命令
set @tmpFile=cast(cast(rand()*9999999999 as bigint)+1000000000 as varchar)+'.tmp'---产生一个临时文件。
if @Append=0
  begin--创建新的文件。
    set @cmd='echo '+@info+'>'+@fName
    exec master..xp_cmdshell @cmd
  end
      else
  begin
    set @cmd='echo '+@info+'>'+@tmpFile
    exec master..xp_cmdshell @cmd
    set @cmd='copy '+@fName+'+'+@tmpFile+'  '+@fName+' /b'
    exec master..xp_cmdshell @cmd
    set @cmd='del '+@tmpFile
    exec master..xp_cmdshell @cmd
end
GO

调用方法:writeInfo 'TEST','c:\text.txt'

如果要追加信息:writeInfo 'TEST','c:\text.txt',1

每次调用这个存储过程就好啦!例子就是上面滴!
[/Quote]
有想法
chenyongpan11 2009-07-21
  • 打赏
  • 举报
回复
告诉你一个存储过程:
CREATE PROCEDURE writeInfo
@info varchar(8000),--要写入的信息的内容
@fName varchar(8000),--要写入信息的文件的文件名。
@Append int=0--,是否追加到现有文件。0,创建新的文件,1,追加到现有文件。
as
declare @tmpFile varchar(8000)--临时文件
declare @cmd varchar(8000)--命令
set @tmpFile=cast(cast(rand()*9999999999 as bigint)+1000000000 as varchar)+'.tmp'---产生一个临时文件。
if @Append=0
begin--创建新的文件。
set @cmd='echo '+@info+'>'+@fName
exec master..xp_cmdshell @cmd
end
else
begin
set @cmd='echo '+@info+'>'+@tmpFile
exec master..xp_cmdshell @cmd
set @cmd='copy '+@fName+'+'+@tmpFile+' '+@fName+' /b'
exec master..xp_cmdshell @cmd
set @cmd='del '+@tmpFile
exec master..xp_cmdshell @cmd
end
GO

调用方法:writeInfo 'TEST','c:\text.txt'

如果要追加信息:writeInfo 'TEST','c:\text.txt',1

每次调用这个存储过程就好啦!例子就是上面滴!
htl258_Tony 2009-07-21
  • 打赏
  • 举报
回复
exec master..xp_cmdshell 'bcp test11..tb out c:\d.txt1 -c -S.\SQL2008 -T' 

/*
output
-----------------------------------------------------------------------
NULL
开始复制...
NULL
已复制 12 行。
网络数据包大小(字节): 4096
总时钟时间(毫秒) : 63 平均值: (每秒 190.48 行。)
NULL

(7 行受影响)
*/
临时做了个测试.
Teng_s2000 2009-07-21
  • 打赏
  • 举报
回复

可以导出的啊,我的是sql2008,实例名是sql2008
feixianxxx 2009-07-21
  • 打赏
  • 举报
回复
感谢 小梁 TONY
success
htl258_Tony 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 feixianxxx 的回复:]
引用 44 楼 liangck 的回复:
引用 42 楼 feixianxxx 的回复:
引用 41 楼 liangck 的回复:
是默认实例吗?

。。。好像我的电脑上海有个SQL2000是默认 这个08 不是。。
有问题么?


汗.

那你用的是08吧?..test这个数据库是在08里的吧?.

那2000是默认实例.
-S.
就会连接到2000里去..

看看08的实例名.

然后使用
-S 计算机名\实例名
或者
-S IP\实例名

-----
这样连接到指定的数据库服务实例中.

。。。实例名怎么看。。。。
[/Quote]
看你用SQL Server Management Studio是怎么登录SQL2008实例的,那个服务器名称一杠后面就是实例名.
htl258_Tony 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 feixianxxx 的回复:]
引用 41 楼 liangck 的回复:
是默认实例吗?

。。。好像我的电脑上海有个SQL2000是默认 这个08 不是。。
有问题么?
[/Quote]
问题就出在这里.
IP(或服务器名)\实例名.
feixianxxx 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 liangck 的回复:]
引用 42 楼 feixianxxx 的回复:
引用 41 楼 liangck 的回复:
是默认实例吗?

。。。好像我的电脑上海有个SQL2000是默认 这个08 不是。。
有问题么?


汗.

那你用的是08吧?..test这个数据库是在08里的吧?.

那2000是默认实例.
-S.
就会连接到2000里去..

看看08的实例名.

然后使用
-S 计算机名\实例名
或者
-S IP\实例名

-----
这样连接到指定的数据库服务实例中.
[/Quote]
。。。实例名怎么看。。。。
htl258_Tony 2009-07-21
  • 打赏
  • 举报
回复
exec master..xp_cmdshell 'bcp test..tb out c:\d.txt -c -S. -T' 
/*
output
-------------------------------------------------------------------
NULL
开始复制...
NULL
已复制 57 行。
网络数据包大小(字节): 4096
总时钟时间(毫秒) : 62 平均值: (每秒 919.35 行。)
NULL

(7 行受影响)
*/
--在我这没什么问题.我的数据库:
/*
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
Oct 14 2005 00:33:37
Copyright (c) 1988-2005 Microsoft Corporation
Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
*/
liangCK 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 42 楼 feixianxxx 的回复:]
引用 41 楼 liangck 的回复:
是默认实例吗?

。。。好像我的电脑上海有个SQL2000是默认 这个08 不是。。
有问题么?
[/Quote]

汗.

那你用的是08吧?..test这个数据库是在08里的吧?.

那2000是默认实例.
-S.
就会连接到2000里去..

看看08的实例名.

然后使用
-S 计算机名\实例名
或者
-S IP\实例名

-----
这样连接到指定的数据库服务实例中.
liangCK 2009-07-21
  • 打赏
  • 举报
回复
语句似乎没啥问题..
不过偶猜..RPWT的可能性比较大..呵呵.
feixianxxx 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 liangck 的回复:]
是默认实例吗?
[/Quote]
。。。好像我的电脑上海有个SQL2000是默认 这个08 不是。。
有问题么?
liangCK 2009-07-21
  • 打赏
  • 举报
回复
是默认实例吗?
liangCK 2009-07-21
  • 打赏
  • 举报
回复
select * from sys.databases where name = N'test';
加载更多回复(43)

22,298

社区成员

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

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