/*******  导出到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=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=;')...产品





*********************  导入 xml 文件





DECLARE @idoc int

DECLARE @doc varchar(1000)

--sample XML document

SET @doc ='

<root>

  <Customer cid= "C1" name="Janine" city="Issaquah">

      <Order oid="O1" date="1/20/1996" amount="3.5" />

      <Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied

      </Order>

   </Customer>

   <Customer cid="C2" name="Ursula" city="Oelde" >

      <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue 

             white red">

            <Urgency>Important</Urgency>

            Happy Customer.

      </Order>

      <Order oid="O4" date="1/20/1996" amount="10000"/>

   </Customer>

</root>

'

-- Create an internal representation of the XML document.

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc





-- Execute a SELECT statement using OPENXML rowset provider.

SELECT *

FROM OPENXML (@idoc, '/root/Customer/Order', 1)

      WITH (oid     char(5), 

            amount  float, 

            comment ntext 'text()')

EXEC sp_xml_removedocument @idoc





 





???????





/**********************Excel导到Txt****************************************/

想用

select * into opendatasource(...) from opendatasource(...)

实现将一个Excel文件内容导入到一个文本文件





如果Excel中有两列,第一列为姓名,第二列为非常行帐号(16位)

且银行帐号导出到文本文件后分两部分,前8位和后8位分开。









邹健:

假设要用你上面的语句插入的话,文本文件必须存在,并且有一行:姓名,银行账号1,银行账号2

然后就能够用以下的语句进行插入

注意文件名称和文件夹依据你的实际情况进行改动.





insert into

opendatasource('MICROSOFT.JET.OLEDB.4.0'

,'Text;HDR=Yes;DATABASE=C:\'

)...[aa#txt]

--,aa#txt)

--*/

select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) 

from 

opendatasource('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls'

--,Sheet1$)

)...[Sheet1$]





 





假设你想直接插入并生成文本文件,就要用bcp





declare @sql varchar(8000),@tbname varchar(50)





--首先将excel表内容导入到一个全局暂时表

select @tbname='[##temp'+cast(newid() as varchar(40))+']'

 ,@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) 

 into '+@tbname+' from 

opendatasource(''MICROSOFT.JET.OLEDB.4.0''

,''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls''

)...[Sheet1$]'

exec(@sql)





--然后用bcp从全局暂时表导出到文本文件

set @sql='bcp "'+@tbname+'" out "c:\aa.txt" /S"(local)" /P"" /c'

exec master..xp_cmdshell @sql





--删除暂时表

exec('drop table '+@tbname)









/********************导整个数据库*********************************************/





用bcp实现的存储过程









/*

 实现数据导入/导出的存储过程

         依据不同的參数,能够实现导入/导出整个数据库/单个表

 调用演示样例:

--导出调用演示样例

----导出单个表

exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',1

----导出整个数据库

exec file2table 'zj','','','xzkh_sa','C:\docman',1





--导入调用演示样例

----导入单个表

exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',0

----导入整个数据库

exec file2table 'zj','','','xzkh_sa','C:\docman',0





*/

if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)

 drop procedure File2Table

go

create procedure File2Table

@servername varchar(200)  --服务器名

,@username varchar(200)   --用户名,假设用NT验证方式,则为空''

,@password varchar(200)   --密码

,@tbname varchar(500)   --数据库.dbo.表名,假设不指定:.dbo.表名,则导出数据库的全部用户表

,@filename varchar(1000)  --导入/导出路径/文件名称,假设@tbname參数指明是导出整个数据库,则这个參数是文件存放路径,文件名称自己主动用表名.txt

,@isout bit      --1为导出,0为导入

as

declare @sql varchar(8000)





if @tbname like '%.%.%' --假设指定了表名,则直接导出单个表

begin

 set @sql='bcp '+@tbname

  +case when @isout=1 then ' out ' else ' in ' end

  +' "'+@filename+'" /w'

  +' /S '+@servername

  +case when isnull(@username,'')='' then '' else ' /U '+@username end

  +' /P '+isnull(@password,'')

 exec master..xp_cmdshell @sql

end

else

begin --导出整个数据库,定义游标,取出全部的用户表

 declare @m_tbname varchar(250)

 if right(@filename,1)<>'\' set @filename=@filename+'\'





 set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''

 exec(@m_tbname)

 open #tb

 fetch next from #tb into @m_tbname

 while @@fetch_status=0

 begin

  set @sql='bcp '+@tbname+'..'+@m_tbname

   +case when @isout=1 then ' out ' else ' in ' end

   +' "'+@filename+@m_tbname+'.txt " /w'

   +' /S '+@servername

   +case when isnull(@username,'')='' then '' else ' /U '+@username end

   +' /P '+isnull(@password,'')

  exec master..xp_cmdshell @sql

  fetch next from #tb into @m_tbname

 end

 close #tb

 deallocate #tb 

end

go









/************* Oracle **************/

EXEC sp_addlinkedserver 'OracleSvr', 

   'Oracle 7.3', 

   'MSDAORA', 

   'ORCLDB'

GO





delete from openquery(mailser,'select *  from yulin')





select *  from openquery(mailser,'select *  from yulin')





update openquery(mailser,'select * from  yulin where id=15')set disorder=555,catago=888





insert into openquery(mailser,'select disorder,catago from  yulin')values(333,777)





 





补充:





对于用bcp导出,是没有字段名的.





用openrowset导出,须要事先建好表.





用openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入

T-SQL 操作文件 具体解释的更多相关文章

  1. MyBatis -- sql映射文件具体解释

    MyBatis 真正的力量是在映射语句中. 和对等功能的jdbc来比价,映射文件节省非常多的代码量. MyBatis的构建就是聚焦于sql的. sql映射文件有例如以下几个顶级元素:(按顺序) cac ...

  2. SQL Server 文件操作

    在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件. 一,判断文件是否存在 存储过程sys.xp_fileexist 用于 ...

  3. 基于Git的数据库sql文件的管理——完美解决团队sql操作协同问题

    目录 基于Git的数据库sql文件的管理--完美解决团队sql操作协同问题 1.产生背景 2.之前没用Git管理数据库出现的问题 2.1 用同一个库调试带来的问题 3.解决方案 3.1 Sql文件的创 ...

  4. SQL Server错误代码及解释(留着备用)

    原文:SQL Server错误代码及解释(留着备用) 转自:http://www.ajia.me/Article/193.html Code Error Message 0 操作成功完成.  1 功能 ...

  5. 你还可以再诡异点吗——SQL日志文件不断增长

    前言 今天算是遇到了一个罕见的案例. SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽. 但这次我碰到的问题确实比较诡异,其解决方式 ...

  6. 虚拟机出现“操作文件.PhysicalDrive1失败”的解决方法

    今天打算利用U盘给虚拟机装系统做实验,中途遇到了"操作文件.PhysicalDrive1失败"的错误,试了网上的方法都没有成功,最后自己试了很久总算弄出来了.鉴于本人的基础水平有限 ...

  7. Java 执行 SQL 脚本文件

    转自:http://blog.csdn.net/hongmin118/article/details/4588941 package com.unmi.db; import java.io.FileI ...

  8. linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释

    •/etc/passwd文件用于存放用户账户信息,每行代表一个账户,每个账户的各项信息用冒号分割,例如: root:x:::root:/root:/bin/bash username:password ...

  9. SQL Server 文件路径

    原文:SQL Server 文件路径 系统数据库文件路径 master <drvie>:\program files\microsoft sql server\mssql10.<in ...

随机推荐

  1. 查看htmlView

    1.视图 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too ...

  2. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

  3. 输入输出函数 I/O函数之perror()

    perror()函数的函数原型 void perror(char const *message); 它会将message信息输出出来,后面再加上错误原因字符串. 下面是来自百度百科的实例: #incl ...

  4. 02-OC方法、属性

    目录: 一.方法 二.实例变量 三.属性(点语法) 四.初始化方法(自定义构造方法) 回到顶部 一.方法 1 函数与方法有什么区别? 函数只是一个程序的代码段,与类无关. 方法,类的一部分,代表对象可 ...

  5. 11-UIKit(Storyboard、View的基本概念、绘制图形、UIBezierPath)

    目录: 1. Storyboard 2. Views 3. View的基本概念介绍 4. 绘制图形 5. UIBezierPath 回到顶部 1. Storyboard 1.1 静态表视图 1)Sec ...

  6. Android项目实战手机安全卫士(02)

    目录 项目结构图 源代码 运行结果 项目源代码 项目结构图 源代码 清单 01.  SplashActivity.java package com.coderdream.mobilesafe.acti ...

  7. java设计模式之——策略模式

    1.策略模式有什么好处? 策略模式的好处在于你可以动态的改变对象的行为. 2.设计原则 设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++中可以用虚类),然后在类中包含这 ...

  8. 香蕉派 BPI-M1+ 双核开源硬件单板计算机

    香蕉派 BPI-M1+ 开源硬件开发板 深圳市源创通信技术有限公司公司 http://www.sinovoip.com.cn/cp_view.asp?id=562 产品介绍 Banana PI BPI ...

  9. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

    (1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...

  10. C# - MemoryStream

    代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...