【SQL SERVER中关于大容量数据的导入导出总结】
博文地址 请进:http://blog.csdn.net/feixianxxx/archive/2010/03/29/5427485.aspx
/*------------------------------ Author :feixianxxx(poofly)-- Date :2010-03-29 14:04:14-- Version:-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Evaluation Edition on Windows NT 6.1 <X86> (Build 7600: )-- CONTENT:关于数据大容量的导入导出小结 ----------------------------*/
--前序,开启xp_cmdshell --关于xp_cmdshell的一些知识 请看 http://blog.csdn.net/feixianxxx/archive/2009/08/14/4445603.aspxEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--环境create table test( id int, value varchar(100))goinsert test values(1,'s1')insert test values(2,'s2')insert test values(3,'s3')insert test values(4,'s4')go--1将表的数据导出到TEXT.txt文件中exec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -c -Usa -P123456'--如果是WINDOWS身份 直接 xec master..xp_cmdshell 'bcp tempdb.dbo.test out e:\test.txt -T -c'--2将TEXT.txt文件中的数据复制到test1表select * into test1 from test where 1=2exec master..xp_cmdshell 'bcp tempdb.dbo.test1 in e:\test.txt -c -Usa -P123456'select * from test1--3将TEST表的ID字段复制到TEXT.txt中exec master..xp_cmdshell 'bcp "SELECT id FROM tempdb.dbo.test" queryout e:\test.dat -T -c'--4将test表中的第一行移动到text.txt中exec master..xp_cmdshell 'bcp "SELECT top 1 * from tempdb.dbo.test " queryout e:\test.txt -c -Usa -P123456'--关闭xp_cmdshellEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
--truncate table testBULK INSERT tempdb..test FROM 'E:\test.txt' WITH ( FIELDTERMINATOR =',',--字段分割符号 ROWTERMINATOR ='\n'--换行符号 )select * from test /*id value----------- -----------1 s12 asds3 sadsa100 2asda*/
--包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。--当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的临时方法。--对于较频繁引用 OLE DB 数据源的情况,请改为使用链接服务器。--A.将 OPENROWSET 与 SELECT 和 SQL Server Native Client OLE DB 访问接口一起使用(MSDN)以下示例使用 SQL Server Native Client OLE DB 务器发送邮件?
2。将数据从多个客户端并行导入到单个表:
a.如果是完整恢复模式,改成大容量日志模式
b.指定了TABLOCK
c.表上没有索引
3。使用批处理:通过设置BCP或者BULK INSERT的相关选项,是用于可以指定在操作过程中发给SQL的每个批处理的行数。
4。禁用触发器和约束:默认情况下是禁用的。如果要检查,可以在复制完成后进行一次更新操作(当然值不可以变)
5。对数据文件中的数据排序:通过设置ORDER提示,提高性能。默认数据文件是不排序的。
6。控制锁定行为:指定大容量操作过程获得一个大容量更新表级锁,这样可以减少表上锁的争夺。
7。回避DEFAULT:通过设置相关选项,回避在复制数据到表中时,对有DEFAULT的列插入默认值,而是改成在列中值为NULL。
[解决办法]
SFFF
[解决办法]
SFFFFFFFF
[解决办法]
学习..
[解决办法]
大容量数据导入,如果需要验证怎么处理?
[解决办法]
一小撮不明真相的烤鸭路过并学习
[解决办法]
强力 支持
[解决办法]
支持一下
学习了
[解决办法]
[解决办法]
我飞过
[解决办法]
留个痕迹``