易截截图软件、单文件、免安装、纯绿色、仅160KB

SQLServer 导入导出

·         本文讨论了如何通过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数据库中建立表。
    USE db1
    SELECT * INTO db2.dbo.table2 from table1
    以上语句在数据库db2中建立了一个所有者是dbo的表table2,在向db2建表时当前登录的用户必须有在db2建表的权限才能建立table2。     使用SELECT INTO要注意的一点是SELECT INTO不可以和COMPUTE一起使用,因为COMPUTE返回的是一组记录集,这将会引起二意性(即不知道根据哪个表建立空表)。
(2).使用INSERT INTO 和 UPDATE插入和更新数据
    SELECT INTO只能将数据复制到一个空表中,而INSERT INTO可以将一个表或视图中的数据插入到另外一个表中。
    INSERT INTO table1 SELECT * from table2
    或
    INSERT INTO db2.dbo.table1 SELECT * from table2
    但以上的INSERT INTO语句可能会产生一个主键冲突错误(如果table1中的某个字段是主键,恰巧table2中的这个字段有的值和table1的这个字段的值相同)。因此,上面的语句可以修改为
INSERT INTO table1  -- 假设字段f1为主键
  SELECT * from table2 WHERE
    NOT


相关文档:

Sqlserver中Compute By子句用法分析

Sqlserver中Compute By子句用法分析
2007年04月20日 星期五 08:05
使用Compute by子句和行统计函数(count,sum,max,avg,min等),可以统计排序中结果完全相同的列,统计值作为查询结果以附加行的形式显示,
语法:Compute avg|count|max|min|sum by 表达式
1、举一个例子
比如有一个数据表:表名为person,三个字段分别 ......

sqlserver移植为Oracle笔记

Oracle笔记
l         关于TRUNC函数
   SELECT
   RELATED_ID ,
      DOC_ID ,
      CAT_ID ,
      CAT_CODE ,
      RELEASE_DATE ,
&n ......

sqlserver:openrowset / oracle:table/view@dblink名

只是sqlserver 提供的远程数据访问函数;  在本地sqlserver 中取外部数据源数据时候可用;
对连接本地 oracle 操作远程 oracle 不能使用; 测试: pl/sql 中使用:
select * from openrowset(................); 无效!!!!!!!!!!!!!!
在oracle 中需要访问远程数据,需要建立一连接远程oracle 的 dblink ;
再用如下方 ......

Sqlserver 取汉字的第一个字母,方便模糊查询

 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)
    --如果非汉字字符,返回原字符
& ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号