❶ sql server 2005 查询出的结果如果保存为 excel格式
打开 SQL server企业管理器
❷ BCP文件如何放进SQL Server 2005 我有一个.bcp 文件,怎么放进sql啊
--执行的时候 [14年1月底].dbo.a" queryout 。。。这里不要换行
EXEC master..xp_cmdshell 'BCP "select * from [14年1月底].dbo.a"
queryout "C:\Documents and Settings\Administrator\桌面\bcp.txt" -c -t "|" -U sa -P sa'
❸ 如何删除大量数据 sql server2005 数据量在8千万左右
你要整表删除吗,那么你用truncate table 可以瞬间删除所有记录,但是这个不记录log,无法回滚。也不能加条件。
如果要加条件,就只好用delete了,或者就是用DTS把你所要的表导出到文本,然后清空表,再把文本导回表中。
你用sp_spaceused 'talbe_name'可以迅速查到你要的记录数,及表所占的空间。
truncate table table_name
delete table_name where .........
sp_spaceused 'table_name'
如果这样你可以用bcp先导出你要的5千万数据
先count(*)你的记录然后-8kw=@num
1、在cmd下,导出你要保留的记录到文本data_1中
E:\>bcp "select top @num * from db.dbo.table order by id desc" queryout data_1.txt -c -t "|" -r \n -U sa -P password
2、truncate table table_name ---trun掉你的表
3、将 data_1.txt 的数据导入到table中
E:\temp>bcp db.dbo.Table in data_1.txt -b 5000 -c -t ",|" -r \n -U sa -P password
4、ok搞定
速度绝对比delete快不知道多少倍。
而且日志也比较小。
然后你要高出1千五百万也可以用bcp来做。
效率很高。
❹ 系统win2003 数据库sqlserver2005 使用bcp 将txt文件插入数据库报错。。。。
先执行以下以句再试下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
❺ sql server2005中bcp导出临时表不成功,始终报临时表无效,但我直接查询临时表都可以查出数据,这是为何
大概是因为创建临时表#tempXml的连接和bcp的连接不是同一个连接,因而临时表对bcp连接不可见。
把临时表创建成全局临时表,应该可以解决此问题。创建方法一样,只是以两个##开头,例如全局临时表名##tempXml。
❻ 将excel数据导入SQLServer2005
在企业管理器的导入一步步操作或用
语句如下
--从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
/*===================================================================*/
--如果接受数据导入的表已经存在
insertinto表select*from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
--如果导入数据并生成表
select*into表from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
/*===================================================================*/
--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
insertintoOPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
select*from表
--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXECmaster..xp_cmdshell'bcp数据库名.dbo.表名out"c:\test.xls"/c-/S"服务器名"/U"用户名"-P"密码"'
--导出查询的情况
EXECmaster..xp_cmdshell'bcp"SELECTau_fname,au_lnameFROMpubs..authorsORDERBYau_lname"queryout"c:\test.xls"/c-/S"服务器名"/U"用户名"-P"密码"'
/*--说明:
c:\test.xls为导入/导出的Excel文件名.
sheet1$为Excel文件的工作表名,一般要加上$才能正常使用.
--*/
❼ 如何导出 sql server2005数据库中的所有表数据
你需要做的第一件事是确定xp_cmdshell是可用的。你可以选择下面两种方法中的一种来实现。
1.你可以使用sp_configure并执行下面的脚本。
EXECmaster.dbo.sp_configure'showadvancedoptions',1
RECONFIGURE
EXECmaster.dbo.sp_configure'xp_cmdshell',1
RECONFIGURE
2.你可以使用SurfaceAreaConfiguration工具。
选择功能中的SurfaceAreaConfiguration并检查Enablexp_cmdshell检验栏。
图一
现在既然你已经使xp_cmdshell可用,那么你可以准备输出你的文件。
下面是一个示例命令,它将把系统文件表的结果输出到以逗号分割的文件bcptest.txt中。只需复制并把它粘贴到一个查询窗口中且执行这个查询。
EXECxp_cmdshell'bcp"SELECT*FROMsysfiles"queryout"C:bcptest.txt"-T-c-t,'
注:BCP是一个命令行实用工具,xp_cmdshell要求只能在一个SQL批处理内使用。
当在"master"数据库中执行上面的命令时将得到这个输出结果。
图二
使用的参数是:
lQueryout选项允许你指定一个查询来输出。这可以像我们使用的查询那样简单也可以像你需要的那样复杂。你也可以创建一个视图并从视图中选择数据。
lfilename是存储结果的,它位于queryout选项之后。
l-T参数指定bcp实用工具通过集成安全使用一个可信连接来连接到SQLServer。如果你想使用一个SQLServer登陆,那么你可以使用-P(密码)和-U(用户)。
l-c指定将用于各个字段的字符数据类型。
l-t参数允许你指定一个字段定界符。在-t之后的字符将用于隔开数据字段。如果-t被删除了,那么tab将用于默认定界符。
另一个你可能需要使用的参数是-S,你可以用它来指定服务器名称。如果你有一个指定的实例,那么你需要使用这个参数。下面是一个连接到服务器"DEVELOP"和实例"DEV1"的例子。
EXECxp_cmdshell'bcp"selectname,type_desc,create_datefrom
sys.objects"queryout"C:bcptest2.txt"-T-SDEVELOPDEV1-c-t,'
你也必须知道使用参数-t和-T的实例是不一样的,所以要保证你在实例中使用正确的参数。
❽ SQL server 2005 使用bcp读取其他机器上的txt文件报错“无法打开BCP主数据文件”,映射路径应该如何使用
将另一台电脑磁盘下文件夹做共享处理就OK 了!
❾ BCP 导出数据的问题 老是不成功 SQL2005
动作可以选择。
(1) 导入。
这个动作使用in命令完成,后面跟需要导入的文件名。
(2) 导出。
这个动作使用out命令完成,后面跟需要导出的文件名。
(3) 使用SQL语句导出。
这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。
(4) 导出格式文件。
这个动作使用format命令完成,后而跟格式文件名。
下面介绍一些常用的选项:
-f format_file
format_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。
-x
这个选项要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row
指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。
-L last_row
指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束。
-c
使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。
-w
和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。
-t field_term
指定字符分割符,默认是"\t"。
-r row_term
指定行分割符,默认是"\n"。
-S server_name[ \instance_name]
指定要连接的SQL Server服务器的实例,如果未指定此选项,BCP连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。
-U login_id
指定连接SQL Sever的用户名。
-P password
指定连接SQL Server的用户名密码。
-T
指定BCP使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P。
-k
指定空列使用null值插入,而不是这列的默认值。
2. 如何使用BCP导出数据
(1) 使用BCP导出整个表或视图。
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密码连接
或
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任连接
下面是上述命令执行后的输出结果
Starting ...
105 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 10 Average : (10500.00 rows per sec.)
下面是currency1.txt的部分内容
AED Emirati Dirham 1998-06-01 00:00:00.000
AFA Afghani 1998-06-01 00:00:00.000
... ... ...
... ... ...
ZWD Zimbabwe Dollar 1998-06-01 00:00:00.000
在使用密码登录时需要将-U后的用户名和-P后的密码加上双引号。
注:BCP除了可以在控制台执行外,还可以通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行BCP。如上述第一条命令可改写为
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password"'
执行xp_cmdshell后,返回信息以表的形式输出。为了可以方便地在SQL中执行BCP,下面的命令都使用xp_cmdshell执行BCP命令。
(2) 对要导出的表进行过滤。
BCP不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数。通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。
EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -c -U"sa" -P"password"'
BCP还可以通过简单地设置选项对导出的行进行限制。
EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -F 10 -L 13 -c -U"sa" -P"password"'
这条命令使用了两个参数-F 10和-L 13,表示从SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出来的结果中取第10条到13条记录进行导出。
3. 如何使用BCP导出格式文件
BCP不仅可以根据表、视图导入导出数据,还可以配合格式文件对导入导出数据进行限制。格式文件以纯文本文件形式存在,分为一般格式和xml格式。用户可以手工编写格式文件,也可以通过BCP命令根据表、视图自动生成格式文件。
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format1.fmt -c -T'
上述命令将currency表的结构生成了一个格式文件currency_format1.fmt,下面是这个格式文件的内容。
9.0
3
1 SQLCHAR 0 6 "\t" 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "\t" 2 Name SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 24 "\r\n" 3 ModifiedDate
这个格式文件记录了这个表的字段(共3个字段)类型、长度、字符和行分割符和字段名等信息。
BCP还可以通过-x选项生成xml格式的格式文件。
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format2.fmt -x -c -T'
xml格式文件所描述的内容和普通格式文件所描述的内容完全一样,只是格式不同。
4. 如何使用BCP导入数据
BCP可以通过in命令将上面所导出的currency1.txt和currency2.txt再重新导入到数据库中,由于currency有主键,因此我们将复制一个和currency的结构完全一样的表。
SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency
将数据导入到currency1表中
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -T'
导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -F 10 -L 13 -T'
在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是24,如果某个文本文件中的相应字段的长度超过24,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入。
使用普通的格式文件
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -f c:\currency_format1.fmt -T'
使用xml格式的格式文件
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -x -f c:\currency_format2.fmt -T'
总结
BCP命令是SQL Server提供的一个快捷的数据导入导出工具。使用它不需要启动任何图形管理工具就能以高效的方式导入导出数据。当然,它也可以通过xp_cmdshell在SQL语句中执行,通过这种方式可以将其放到客户端程序中(如delphi、c#等)运行,这也是使客户端程序具有数据导入导出功能的方法之一。
❿ sql server 2005 bcp可以用where条件筛选吧
set @sqlstr='bcp "select * from test..table where convert(varchar(10),starttime,120)=convert(varchar(10),dateadd(day,-1,getdate()),120) " queryout "D:\SQLautobackup\'+@sqldate+'.txt" -c -T'
exec master.dbo.xp_cmdshell @sqlstr 试试