excel向sql导入
发布网友
发布时间:2022-04-20 06:38
我来回答
共2个回答
热心网友
时间:2022-04-11 18:44
检查下路径..
1、将SQL SERVER中查询到的数据导成一个Excel文件
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp
saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp
"SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
2、在SQL SERVER里往Excel插入数据:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)
T-SQL代码:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, prokt) valueS (20, 'Test')
SQLServer和Excel
1、向Excel查询
select * from OpenRowSet(’microsoft.jet.oledb.4.0’,’Excel 8.0;HDR=yes;database=c:\book1.xls;’,’select * from [Sheet1$]’) where c like ’%f%’
select * from
OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’
,’Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls’,[sheet1$])
1)hdr=yes时可以把xls的第1行作为字段看待,如第1个中hdr=no的话,where时就会报错
2)[]和美圆$必须要,否则M$可不认这个账
2、修改Execl
update OpenRowSet(’microsoft.jet.oledb.4.0’,’Excel 8.0;hdr=yes;database=c:\book1.xls;’,’select * from [Sheet1$]’)
set a=’erquan’ where c like ’%f%’
3、导入导出
insert into OpenRowSet(’microsoft.jet.oledb.4.0’,’Excel 8.0;hdr=yes;database=c:\book1.xls;’,’select * from [Sheet2$]’)(id,name)
select id,name from serv_user
或BCP
master..xp_cmdshell’bcp "serv-htjs.dbo.serv_user" out "c:\book2.xls" -c -q -S"." -U"sa" -P"sa"’
从Excel向SQLServer导入:
select * into serv_user_bak
from OpenRowSet(’microsoft.jet.oledb.4.0’,’Excel 8.0;HDR=yes;database=c:\book1.xls;’,’select * from [Sheet1$]’)
如果表serv_user_bak不存在,则创建
有关BCP和分布式查询的详细解答,就查SQLServer自带的帮助吧
SQLServer和txt文件、HTML文件、VFP文件的数据交换都显得非常容易了。。。。
如果你是用.NET进行数据的导入,那么也可以用SqlBulkCopy 类. SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势。
使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。
热心网友
时间:2022-04-11 20:02
我没安装VB,用的VBA来完成的:
Dim ado As New ADODB.Connection, rs As New ADODB.Recordset, sqlString As String
sqlString = "insert into test select * from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=Yes;database=e:\book1.xls;','select * from [Sheet1$]')"
connString = "Provider = SQLOLEDB;Data Source =127.0.0.1;Initial Catalog =ABC;User ID =sa;Password =sa;"
ado.Open connString
ado.Execute (sqlString)