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’
此句需加引号
查看全文
相关阅读:
Coursera机器学习week11 单元测试
关于 TypeReference 的解释
getModifiers 方法解释。
instanceof isInstance isAssignableFrom 比较
elasticsearch 基础 语法总结
kibana 启动 关闭 和进程查找
MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
spring boot 项目 热启动
java zip 压缩文件
Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
原文地址:https://www.cnblogs.com/luoyaoquan/p/2052597.html
最新文章
函数基础
基础数据类型常用
集合 copy
代码块
字典类型
列表基础,元组
基础类型
python基础
例题
Elasticsearch--配置文件
热门文章
Elasticsearch--数据索引
51nod 1791合法括号子段
天梯赛+蓝桥杯 总结
建立一个隐藏层的神经网络模型
加分二叉树
大数开平方
兰顿蚂蚁
LeetCode 617. Merge Two Binary Trees
kaggle入门 手写数字识别
2018年全国多校算法寒假训练营练习比赛(第四场)ABCFH
Copyright © 2011-2022 走看看