【SQL Server 数据库导入导出部分】

来源:互联网 发布:cr2打开软件 编辑:程序博客网 时间:2024/05/18 02:34



1
、在查询分析器下查询Excel文档
SELECT * FROM
OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:/
测试.xls";
User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$

2
、从数据库中导出数据并存到文件中
EXEC master..xp_cmdshell 'bcp CAS2004..HGZ_LIAOJIAN out c:/temp1.xls -c -q -S"." -U"sa" -P""'
EXEC master..xp_cmdshell 'bcp CAS2004..HGZ_LIAOJIAN out c:/temp1.txt -c -q -S"." -U"sa" -P""'

3
、从文件中导入数据到数据库对应表中
EXEC master..xp_cmdshell 'bcp CAS2004..HGZ_LIAOJIAN in c:/temp1.xls -c -q -S"." -U"sa" -P""'
EXEC master..xp_cmdshell 'bcp CAS2004..HGZ_LIAOJIAN in c:/temp1.txt -c -q -S"." -U"sa" -P""

 

 

 

SQL SERVER 数据库实用SQL语句】

1.
按姓氏笔画排序:
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as

2.
分页SQL语句
select * from(select (row_number() OVER (ORDER BY tab.ID Desc)) as rownum,tab.* from
表名 As tab) As t where rownum between 起始位置 And 结束位置

3.
获取当前数据库中的所有用户表
select * from sysobjects where xtype='U' and category=0

4.
获取某一个表的所有字段
select name from syscolumns where id=object_id('
表名')

5.
查看与某一个表相关的视图、存储过程、函数
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%
表名%'

6.
查看当前数据库中所有存储过程
select name as
存储过程名称 from sysobjects where xtype='P'

7.
查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
或者
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01

8.
查询某一个表的字段和数据类型
select column_name,data_type from information_schema.columns
where table_name = '
表名'

9.
使用事务
在使用一些对数据库表的临时的SQL语句操作时,可以采用SQL SERVER事务处理,防止对数据操作后发现误操作问题
开始事务
Begin tran
  Insert Into TableName Values(…)
SQL
语句操作不正常,则回滚事务。
回滚事务
Rollback tran
SQL
语句操作正常,则提交事务,数据提交至数据库。
提交事务
Commit tran
10.
按全文匹配方式查询
字段名 LIKE N'%[^a-zA-Z0-9]China[^a-zA-Z0-9]%'
OR
字段名 LIKE N'%[^a-zA-Z0-9]China'
OR
字段名 LIKE N'China[^a-zA-Z0-9]%'
OR
字段名 LIKE N'China

11
.计算执行SQL语句查询时间
declare @d datetime
set @d=getdate()
select * from SYS_ColumnProperties select [
语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

12
、说明:几个高级查询运算词
A
UNION 运算符
UNION
运算符通过组合其他两个结果表(例如 TABLE1 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2
B
EXCEPT 运算符
EXCEPT
运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C
INTERSECT 运算符
INTERSECT
运算符通过只包括 TABLE1 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

 

/******* 导出到excel

EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:/temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'

 

/*********** 导入Excel

SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

 

/*动态文件名

declare @fn varchar(20),@s varchar(1000)

set @fn = 'c:/test.xls'

set @s ='''Microsoft.Jet.OLEDB.4.0'',

''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''

set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'

exec(@s)

*/

 

SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

 

/********************** EXCEL导到远程SQL

insert OPENDATASOURCE(

'SQLOLEDB',

'Data Source=远程ip;User ID=sa;Password=密码'

).库名.dbo.表名 (列名1,列名2)

SELECT 列名1,列名2

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="c:/test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

 

 

/** 导入文本文件

EXEC master..xp_cmdshell 'bcp dbname..tablename in c:/DT.txt -c -Sservername -Usa -Ppassword'

 

/** 导出文本文件

EXEC master..xp_cmdshell 'bcp dbname..tablename out c:/DT.txt -c -Sservername -Usa -Ppassword'

EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:/DT.txt -c -Sservername -Usa -Ppassword'

 

导出到TXT文本,用逗号分开

exec master..xp_cmdshell 'bcp "库名..表名" out "d:/tt.txt" -c -t ,-U sa -P password'

 

 

BULK INSERT 库名..表名

FROM 'c:/test.txt'

WITH (

FIELDTERMINATOR = ';',

ROWTERMINATOR = '/n'

)

 

 

--/* dBase IV文件

select * from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'dBase IV;HDR=NO;IMEX=2;DATABASE=C:/','select * from [客户资料4.dbf]')

--*/

 

--/* dBase III文件

select * from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'dBase III;HDR=NO;IMEX=2;DATABASE=C:/','select * from [客户资料3.dbf]')

--*/

 

--/* FoxPro 数据库

select * from openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:/',

'select * from [aa.DBF]')

--*/

 

/**************导入DBF文件****************/

select * from openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;

SourceDB=e:/VFP98/data;

SourceType=DBF',

'select * from customer where country != "USA" order by country')

go

/***************** 导出到DBF ***************/

如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句

 

insert into openrowset('MSDASQL',

'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:/',

'select * from [aa.DBF]')

select * from

 

说明:

SourceDB=c:/ 指定foxpro表所在的文件夹

aa.DBF 指定foxpro表的文件名.

 

 

/*************导出到Access********************/

insert into openrowset('Microsoft.Jet.OLEDB.4.0',

'x:/A.mdb';'admin';'',A) select * from 数据库名..B

 

/*************导入Access********************/

insert into B selet * from openrowset('Microsoft.Jet.OLEDB.4.0',

'x:/A.mdb';'admin';'',A)

 

文件名为参数

declare @fname varchar(20)

set @fname = 'd:/test.mdb'

exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'',

'''+@fname+''';''admin'';'''', topics) as a ')

 

SELECT *

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

'Data Source="f:/northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;Password=;')...产品 '

 

 

 

 

 

 

 

 

1. 分页查询数据
--
查询到行的结果
select * from( 
    select ID,DocClassName,DocClassDesc, ROW_NUMBER() OVER(order by ID) as row from Sys_DocClass 
) a 
where row between 20 and 30

select * from Sys_DocClass

2
、增加异常处理 try ... catch
SET XACT_ABORT ON  --
打开try功能
BEGIN TRY 
    begin tran 
        insert into Sys_DocClass values(...)  --
数据表操作语句
    commit tran --
提交事务
    print 'commited' 
END TRY 
BEGIN CATCH 
    rollback tran      --
回滚事务 
    print 'rolled back' 
END CATCH

3
、通用表达式CTE,可以简化嵌套SQL
--
例:结合通用表达式进行分页
WITH DocClasses AS( 
    select ID,DocClassName,DocClassDesc, ROW_NUMBER() OVER(order by ID) as row from Sys_DocClass 
)
select ID,DocClassName,DocClassDesc from DocClasses where row between 20 and 30

 

 

SQL SERVER 数据库实用SQL语句】 
 
1.按姓氏笔画排序: 
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 
 
2.分页SQL语句 
select * from(select (row_number() OVER (ORDER BY tab.ID Desc)) as rownum,tab.* from 表名 As tab) As t where rownum between 起始位置 And 结束位置 
 
3.获取当前数据库中的所有用户表 
select * from sysobjects where xtype='U' and category=0 
 
4.获取某一个表的所有字段 
select name from syscolumns where id=object_id('表名') 
 
5.查看与某一个表相关的视图、存储过程、函数 
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' 
 
6.查看当前数据库中所有存储过程 
select name as 存储过程名称 from sysobjects where xtype='P' 
 
7.查询用户创建的所有数据库 
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa') 
或者 
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01 
 
8.查询某一个表的字段和数据类型 
select column_name,data_type from information_schema.columns 
where table_name = '表名' 
 
9.使用事务 
在使用一些对数据库表的临时的SQL语句操作时,可以采用SQL SERVER事务处理,防止对数据操作后发现误操作问题 
开始事务 
Begin tran 
  Insert Into TableName Values(…) 
SQL语句操作不正常,则回滚事务。 
回滚事务 
Rollback tran 
SQL语句操作正常,则提交事务,数据提交至数据库。 
提交事务 
Commit tran 
10. 按全文匹配方式查询 
字段名 LIKE N'%[^a-zA-Z0-9]China[^a-zA-Z0-9]%' 
OR 字段名 LIKE N'%[^a-zA-Z0-9]China' 
OR 字段名 LIKE N'China[^a-zA-Z0-9]%' 
OR 字段名 LIKE N'China 
 
11.计算执行SQL语句查询时间 
declare @d datetime 
set @d=getdate() 
select * from SYS_ColumnProperties select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 
 
12、说明:几个高级查询运算词 
A UNION 运算符 
UNION 运算符通过组合其他两个结果表(例如 TABLE1  TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL  UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2
B EXCEPT 运算符 
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL  EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 
C INTERSECT 运算符 

INTERSECT 运算符通过只包括 TABLE1 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

原创粉丝点击