zoukankan
html css js c++ java
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
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
/** 导入文本文件
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表)
*********************
导入 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
/**/
/*
*******************导整个数据库********************************************
*/
用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
/**/
/*
*********************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将文件导入导出到数据库的存储过程:
/**/
/*
--bcp-二进制文件的导入导出
支持image,text,ntext字段的导入/导出
image适合于二进制文件;text,ntext适合于文本数据文件
注意:导入时,将覆盖满足条件的所有行
导出时,将把所有满足条件的行也出到指定文件中
此存储过程仅用bcp实现
邹建 2003.08-----------------
*/
/**/
/*
--调用示例
--数据导出
exec p_binaryIO ’zj’,’’,’’,’acc_演示数据..tb’,’img’,’c:\zj1.dat’
--数据导出
exec p_binaryIO ’zj’,’’,’’,’acc_演示数据..tb’,’img’,’c:\zj1.dat’,’’,0
--
*/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N’
[
dbo
]
.
[
p_binaryIO
]
’)
and
OBJECTPROPERTY
(id, N’IsProcedure’)
=
1
)
drop
procedure
[
dbo
]
.
[
p_binaryIO
]
GO
Create
proc
p_binaryIO
@servename
varchar
(
30
),
--
服务器名称
@username
varchar
(
30
),
--
用户名
@password
varchar
(
30
),
--
密码
@tbname
varchar
(
500
),
--
数据库..表名
@fdname
varchar
(
30
),
--
字段名
@fname
varchar
(
1000
),
--
目录+文件名,处理过程中要使用/覆盖:@filename+.bak
@tj
varchar
(
1000
)
=
’’,
--
处理条件.对于数据导入,如果条件中包含@fdname,请指定表名前缀
@isout
bit
=
1
--
1导出((默认),0导入
AS
declare
@fname_in
varchar
(
1000
)
--
bcp处理应答文件名
,
@fsize
varchar
(
20
)
--
要处理的文件的大小
,
@m_tbname
varchar
(
50
)
--
临时表名
,
@sql
varchar
(
8000
)
--
则取得导入文件的大小
if
@isout
=
1
set
@fsize
=
’
0
’
else
begin
create
table
#tb(可选名
varchar
(
20
),大小
int
,创建日期
varchar
(
10
),创建时间
varchar
(
20
)
,上次写操作日期
varchar
(
10
),上次写操作时间
varchar
(
20
)
,上次访问日期
varchar
(
10
),上次访问时间
varchar
(
20
),特性
int
)
insert
into
#tb
exec
master..xp_getfiledetails
@fname
select
@fsize
=
大小
from
#tb
drop
table
#tb
if
@fsize
is
null
begin
print
’文件未找到’
return
end
end
--
生成数据处理应答文件
set
@m_tbname
=
’
[
##temp’+cast(newid() as varchar(40))+’
]
’
set
@sql
=
’
select
*
into
’
+
@m_tbname
+
’
from
(
select
null
as
类型
union
all
select
0
as
前缀
union
all
select
’
+
@fsize
+
’
as
长度
union
all
select
null
as
结束
union
all
select
null
as
格式
) a’
exec
(
@sql
)
select
@fname_in
=
@fname
+
’_
temp
’
,
@sql
=
’bcp "’
+
@m_tbname
+
’" out "’
+
@fname_in
+
’"
/
S"’
+
@servename
+
case
when
isnull
(
@username
,’’)
=
’’
then
’’
else
’"
/
U"’
+
@username
end
+
’"
/
P"’
+
isnull
(
@password
,’’)
+
’"
/
c’
exec
master..xp_cmdshell
@sql
--
删除临时表
set
@sql
=
’
drop
table
’
+
@m_tbname
exec
(
@sql
)
if
@isout
=
1
begin
set
@sql
=
’bcp "
select
top
1
’
+
@fdname
+
’
from
’
+
@tbname
+
case
isnull
(
@tj
,’’)
when
’’
then
’’
else
’
where
’
+
@tj
end
+
’" queryout "’
+
@fname
+
’"
/
S"’
+
@servename
+
case
when
isnull
(
@username
,’’)
=
’’
then
’’
else
’"
/
U"’
+
@username
end
+
’"
/
P"’
+
isnull
(
@password
,’’)
+
’"
/
i"’
+
@fname_in
+
’"’
exec
master..xp_cmdshell
@sql
end
else
begin
--
为数据导入准备临时表
set
@sql
=
’
select
top
0
’
+
@fdname
+
’
into
’
+
@m_tbname
+
’
from
’
+
@tbname
exec
(
@sql
)
--
将数据导入到临时表
set
@sql
=
’bcp "’
+
@m_tbname
+
’"
in
"’
+
@fname
+
’"
/
S"’
+
@servename
+
case
when
isnull
(
@username
,’’)
=
’’
then
’’
else
’"
/
U"’
+
@username
end
+
’"
/
P"’
+
isnull
(
@password
,’’)
+
’"
/
i"’
+
@fname_in
+
’"’
exec
master..xp_cmdshell
@sql
--
将数据导入到正式表中
set
@sql
=
’
update
’
+
@tbname
+
’
set
’
+
@fdname
+
’
=
b.’
+
@fdname
+
’
from
’
+
@tbname
+
’ a,’
+
@m_tbname
+
’ b’
+
case
isnull
(
@tj
,’’)
when
’’
then
’’
else
’
where
’
+
@tj
end
exec
(
@sql
)
--
删除数据处理临时表
set
@sql
=
’
drop
table
’
+
@m_tbname
end
--
删除数据处理应答文件
set
@sql
=
’del ’
+
@fname_in
exec
master..xp_cmdshell
@sql
go
/**/
/*
* 导入文本文件
EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword’
改为如下,不需引号
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’
此句需加引号
查看全文
相关阅读:
将Ubuntu18.04安装到U盘,实现即插即用
小技巧之 前端自适应
web笔记之 环境搭建
C++学习笔记之 单例模式
推荐一款Markdown编辑器:typora
C++学习笔记之 类和对象
C++学习笔记之 函数
C++学习笔记之 内联函数
C++学习笔记之 引用
C++学习笔记之 const
原文地址:https://www.cnblogs.com/luoyaoquan/p/2052597.html
最新文章
spring-cloud:Hystrix熔断的使用示例
Scrapy爬虫框架第一讲(Linux环境)【Scrapy简介及安装】
PyQuery详解
爬虫原理分析
Ajax详解
BuautifulSoup4库详解
利用selenium爬取淘宝美食内容
windows下mongodb安装详解
python3 数据科学基础(第一章)
windows下mysql安装详解
热门文章
(python3爬虫实战-第一篇)利用requests+正则抓取猫眼电影热映口碑榜
使用html+css+js实现倒计时,开启你痛苦的倒计时吧
CSS3实现文字折纸效果
使用html+css+js实现计算器
JS实现全选、反选、不选
你想往哪里走,在我的领域里你是跑不开我的指向的。
JS、JQ实现焦点图轮播效果
CSS3实现扇形动画菜单特效
使用JQ实现统计剩余字数
使用JS实现文字搬运工
Copyright © 2011-2022 走看看