`
eminem
  • 浏览: 136737 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL语句导入导出大全

    博客分类:
  • SQL
阅读更多
*******  导出到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=;´)...产品

*********************  导入 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外,均不支持非本机数据导入
分享到:
评论

相关推荐

    SQL Server SQL语句导入导出大全

    简介:微软SQL Server数据库SQL语句导入导出大全,包括与其他数据库和文件的数据的导入导出

    前18大旋转修整器企业占据全球87%的市场份额.docx

    前18大旋转修整器企业占据全球87%的市场份额

    Planet-SkySat-Imagery-Product-Specification-Jan2020.pdf

    SKYSAT IMAGERY PRODUCT SPECIFICATION PLANET.COM VIDEO Full motion videos are collected between 30 and 120 seconds by a single camera from any of the active SkySats. Videos are collected using only the Panchromatic half of the camera, hence all videos are PAN only. Videos are packaged and delivered with a video mpeg-4 file, plus all image frames with accompanying video metadata and a frame index file (reference Product Types below)

    Screenshot_20240506_133458_com.netease.yhtj.vivo.jpg

    Screenshot_20240506_133458_com.netease.yhtj.vivo.jpg

    2019年A~F题特等奖论文合集.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,历年美赛特等奖O奖论文

    雷达物位变送器安装和操作手册

    雷达物位变送器安装和操作手册

    node-v11.6.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Python3实现快速排序(源代码)

    快速排序是一种基于分治策略的排序算法,通过选择一个基准元素,将待排序的数组划分为两个子数组,一个包含所有小于基准的元素,另一个包含所有大于基准的元素,然后递归地对这两个子数组进行快速排序。快速排序在平均情况下具有O(n log n)的时间复杂度,是一种非常高效的排序算法。然而,在最坏情况下,当输入数据已经有序或接近有序时,快速排序的性能会退化为O(n^2)。此外,快速排序是不稳定的排序算法,即相等的元素可能在排序过程中改变相对位置。尽管如此,快速排序仍然因其高效的平均性能而在实际应用中广泛使用。在Python3中,可以通过递归或迭代的方式实现快速排序算法,但为了避免额外的空间开销,通常会采用原地排序的方式来实现。

    毕业课设基于51单片机的出租车计价器(昼夜)

    【作品名称】:基于51单片机的出租车计价器(昼夜) 含(程序、仿真图、流程图、原理图) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 出租车计价器: 1、不同情况具有不同的收费标准,具有白天和夜晚不同的计价能力 2、能进行手动修改单价 3、具有数据的复位功能(起步价,起步公里数,里程单价,白天晚上不一样) 4、能够在掉电的情况下存储单价等数据 5、步进电机模拟里程,一圈表示一里路

    2024年中国API 11P往复式气体压缩机行业研究报告.docx

    2024年中国API 11P往复式气体压缩机行业研究报告

    Windows 10系统上安装和配置Tomcat的步骤

    附件是Windows 10系统上安装和配置Tomcat的步骤,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    广东工业大学《计算网络A》实验报告期末考试试题回忆版.doc

    此试题是考试后回忆版本,你会发现是惊喜。恭喜你考个好成绩。

    数据库+人大金仓+Linux系统安装

    数据库+人大金仓+Linux系统安装

    2023年美赛特等奖论文-C-2309397-解密.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,2023年美赛特等奖O奖论文

    opencv-python-4.5.4.60-cp36-cp36m-win-amd64.whl

    opencv-python-4.5.4.60-cp36-cp36m-win-amd64.whl

    减肥管理,全球前10强生产商排名及市场份额.docx

    减肥管理,全球前10强生产商排名及市场份额

    上海大学大学生创新创业训练计划申请书(创新训练项目).doc

    内容概要:《上海大学大学生创新创业训练计划申请书(创新训练项目)》是用于申请参加上海大学的大学生创新创业训练计划的申请书,旨在帮助学生提出创新项目计划,获得培训和支持,促进学生创新创业能力的提升。 适用人群:适合上海大学的在校大学生,特别是对创新创业感兴趣、有创新想法和创业计划的学生,希望通过该计划获得指导和资源支持,实现自己的创业梦想。 使用场景及目标:申请书的使用场景是为了参加上海大学的大学生创新创业训练计划,目标是通过提交详细的创新项目计划,获得评审通过并获得培训、指导和资金支持,从而推动学生的创新创业实践和能力提升。 其他说明:申请书应包括清晰的创新项目描述、项目可行性分析、预期目标和计划、团队介绍等内容,以展现学生的创新能力和项目潜力。申请书的撰写需要认真准备,体现出学生对创新创业的热情和才华,以提高申请成功的机会。

    IEC 60364-7-716-2023 第7-716部分:特殊装置或场所要求.信息和通信技术ICT电缆基础设施上ELV直流配电

    IEC 60364-7-716-2023 低压电气装置.第7-716部分:特殊装置或场所的要求.信息和通信技术(ICT)电缆基础设施上的ELV直流配电.pdf

    IEC PAS 61851-1-1 2023 电动汽车导电充电系统.第1-1部分:使用4型车辆耦合器电动汽车导电带电系统特殊要求

    IEC PAS 61851-1-1 2023 电动汽车导电充电系统.第1-1部分:使用4型车辆耦合器的电动汽车导电带电系统的特殊要求.pdf

Global site tag (gtag.js) - Google Analytics