SQLSERVER 大数据量插入命令:
BULK INSERT是SQLSERVER中提供的一条大数据量导入的命令,它运用DTS(SSIS)导入原理,可以从本地或远程服务器上批量导入数据库或文件数据。批量插入是一个独立的操作,优点是效率非常高。缺点是出现问题后不可以回滚。
  BULK INSERT是用来将外部文件以一种特定的格式加载到数据库表的T-SQL命令。该命令使开发人员能够直接将数据加载到数据库表中,而不需要使用类似于Integration Services这样的外部程序。虽然BULK INSERT不允许包含任何复杂的逻辑或转换,但能够提供与格式化相关的选项,并告诉我们导入是如何实现的。BULK INSERT有一个使用限制,就是只能将数据导入SQL Server。
插入数据下面的例子能让我们更好的理解如何使用BULK INSERT命令。首先,我们来创建一个名为Sales的表,我们将要把来自文本文件的数据插入到这个表中。
本地数据操作:
 当我们使用BULK INSERT命令来插入数据时,创建的表有无触发器需要不同的配置,我们分别举例来看:
【A没有触发器的表】
  CREATE TABLE [dbo].[Sales] 
  ( 
   [SaleID] [int], 
   [Pr ......
    
        
    
     create function comm_getpy
( 
    @str nvarchar(4000) 
) 
returns nvarchar(4000) 
as 
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0 
begin 
    set @word=left(@str,1)
    --如果非汉字字符,返回原字符 
    set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 
               then ( 
                            select top 1 PY 
                            from 
                            ( 
                      &nb ......
    
        
    
     =================分页========================== 
/*分页查找数据*/ 
CREATE PROCEDURE [dbo].[GetRecordSet]  
@strSql varchar(8000),--查询sql,如select  * from [user] 
@PageIndex int,--查询当页号 
@PageSize int--每页显示记录 
AS 
set nocount on 
declare @p1 int 
declare @currentPage int 
set @currentPage = 0 
declare @RowCount int 
set @RowCount = 0 
declare @PageCount int 
set @PageCount = 0 
  exec sp_cursoropen @p1 output,@strSql,@scrollopt=1,@ccopt=1,@rowcount=@rowCount output --得到总记录数 
select @PageCount=ceiling(1.0*@rowCount/@pagesize)  --得到总页数 
,@currentPage=(@PageIndex-1)*@PageSize+1 
select @RowCount,@PageCount 
exec sp_cursorfetch @p1,16,@currentPage,@PageSize 
exec sp_cursorclose @p1 
set nocount off 
GO 
=========================用户注册============================ 
/* 
用户注册,也算是添加吧 
*/ 
Create proc [dbo].[UserAdd] 
( 
@loginID nvarchar(50),     --登录帐号 
@password nvarchar(50), --密码 
@email nv ......
    
        
    
    
package com.wfy.system.dao;   
  
import java.sql.CallableStatement;   
import java.sql.Connection;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Types;   
import java.text.DateFormat;   
import java.text.SimpleDateFormat;   
import java.util.ArrayList;   
import java.util.HashMap;   
import java.util.List;   
import java.util.Map;   
  
import org.springframework.dao.DataAccessException;   
import org.springframework.jdbc.core.ConnectionCallback;   
import org.springframework.jdbc.core.JdbcTemplate;   
  
import com.wfy.util.JDOM;   
  
/**  
*   
* 存储过程通过此类调用  
*   
* @author 金鑫  
*&nbs ......
    
        
    
    
package com.wfy.system.dao;   
  
import java.sql.CallableStatement;   
import java.sql.Connection;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Types;   
import java.text.DateFormat;   
import java.text.SimpleDateFormat;   
import java.util.ArrayList;   
import java.util.HashMap;   
import java.util.List;   
import java.util.Map;   
  
import org.springframework.dao.DataAccessException;   
import org.springframework.jdbc.core.ConnectionCallback;   
import org.springframework.jdbc.core.JdbcTemplate;   
  
import com.wfy.util.JDOM;   
  
/**  
*   
* 存储过程通过此类调用  
*   
* @author 金鑫  
*&nbs ......
    
        
    
    ·         本文讨论了如何通过Transact-SQL以及系统函数OPENDATASOURCE和OPENROWSET在同构和异构数据库之间进行数据的导入导出,并给出了详细的例子以供参考。
 
1. 在SQL Server数据库之间进行数据导入导出
(1).使用SELECT INTO导出数据 
    在SQL Server中使用最广泛的就是通过SELECT INTO语句导出数据,SELECT INTO语句同时具备两个功能:根据SELECT后跟的字段以及INTO后面跟的表名建立空表(如果SELECT后是*, 空表的结构和from所指的表的结构相同);将SELECT查出的数据插入到这个空表中。在使用SELECT INTO语句时,INTO后跟的表必须在数据库不存在,否则出错,下面是一个使用SELECT INTO的例子。
    假设有一个表table1,字段为f1(int)、f2(varchar(50))。
    SELECT * INTO table2 from table1
    这条SQL语的在建立table2表后,将table1的数据全部插入到table1中的,还可以将*改为f1或f2以便向适当的字段中插入数据。
    SELECT INTO不仅可以在同一个数据中建立表,也可以在不同的SQL Server数据库中建立表。
&n ......
    
        
    
    SQLServer2005通过intersect,union,except和三个关键字对应交、并、差三种集合运算。
他们的对应关系可以参考下面图示
       相关测试实例如下:
use tempdb 
go 
if (object_id ('t1' ) is not null ) drop table t1 
if (object_id ('t2' ) is not null ) drop table t2 
go 
create table t1 (a int )
insert into t1 select 1 union select 2 union select 3 
create table t2 (a int )
insert into t2 select 3 union select 4 union select 5 
go 
select * from t1 union select * from t2 
go 
/* 求表并集 
1 
2 
3 
4 
5*/ 
select * from t1 union all   select * from t2 
go 
/*求表并集不过滤重复 
1 
2 
3 
3 
4 
5*/ 
select * from t1 except select * from t2 
go 
/*求t1对t2的差集 
1 
2*/ 
select * from t1 intersect select * from t2 
go 
/*求t1对t2的交集 
3*/ 
 ......