怎么将EXCEL中的特定几列数据导入SQL数据库

seear 2005-05-26 03:44:29
例如我有几个EXCEL表,表中有列A,B,C,D,E,F等,现在我要将A,D的列数据导入数据库,应该如何实现呢~?
use Test_db
SELECT * INTO Import FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=E:\LZJ\a.xls', 'SELECT * FROM [Sheet1$]')

在这中能加上查A,D列的查询条件的吗~?
在线等候...
...全文
558 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
seear 2005-05-30
  • 打赏
  • 举报
回复
我的邮箱是:loohu1075@sohu.com.
同意你的做法,我现在的做法的是:先把所需要的EXCEL字段值用DATATABLE存储,然后再将DATATABLE更新到相应的数据表.
ekin7913046 2005-05-28
  • 打赏
  • 举报
回复
是这样的,我用Ole DB 连接Excel,然后在把结果集读到ListView中!然后上传相应的字段值到远程数据库!
ekin7913046 2005-05-28
  • 打赏
  • 举报
回复
你的邮箱是??
yistudio 2005-05-27
  • 打赏
  • 举报
回复
'SELECT 名次,会员简称,净空单,增减 FROM [Sheet1$]'
seear 2005-05-26
  • 打赏
  • 举报
回复
to ekin7913046(爱情终结者),发出来看看......
mixiaobo 2005-05-26
  • 打赏
  • 举报
回复
使用链接服务器
要简化查询,可以将 Excel 工作簿配置为 SQL Server 中的链接服务器。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306397 如何结合 SQL Server 链接的服务器和分布式查询使用 Excel
下列代码将 Excel 链接服务器“EXCELLINK”上的 Customers 工作表数据导入新的名为 XLImport1 的 SQL Server 表: SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]

还可以通过按照以下方式使用 OPENQUERY 以全通过方式对源数据执行查询: SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
'SELECT * FROM [Customers$]')

返回页首
使用分布式查询
如果不想将对 Excel 工作簿的永久连接配置为链接服务器,可以通过使用 OPENDATASOURCE 或 OPENROWSET 函数为特定目的导入数据。下列代码示例也能将 Excel Customers 工作表数据导入新的 SQL Server 表: SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]

SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])

SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')

返回页首
使用 ADO 和 SQLOLEDB
当通过使用 Microsoft OLE DB for SQL Server (SQLOLEDB) 在 ADO 应用程序中连接到 SQL Server 时,可以使用与“使用分布式查询” 一节中相同的“分布式查询”语法将 Excel 数据导入 SQL Server。

下列 Visual Basic 6.0 代码示例要求添加对 ActiveX 数据对象 (ADO) 的项目引用。此代码示例还演示了如何在 SQLOLEDB 连接上使用 OPENDATASOURCE 和 OPENROWSET。 Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
"Initial Catalog=<database>;User ID=<user>;Password=<password>"

'Import by using OPENDATASOURCE.
strSQL = "SELECT * INTO XLImport6 FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source=C:\test\xltest.xls;" & _
"Extended Properties=Excel 8.0')...[Customers$]"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff

'Import by using OPENROWSET and object name.
strSQL = "SELECT * INTO XLImport7 FROM " & _
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
"'Excel 8.0;Database=C:\test\xltest.xls', " & _
"[Customers$])"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff

'Import by using OPENROWSET and SELECT query.
strSQL = "SELECT * INTO XLImport8 FROM " & _
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
"'Excel 8.0;Database=C:\test\xltest.xls', " & _
"'SELECT * FROM [Customers$]')"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff

cn.Close
Set cn = Nothing

ekin7913046 2005-05-26
  • 打赏
  • 举报
回复
我是用程序来实现的。不知道你需要否?
seear 2005-05-26
  • 打赏
  • 举报
回复
第个名次用 名次1 来表示可以实现,但是我想用列数来导入,那样控制合理些,用列数应该怎么表示 ~?

seear 2005-05-26
  • 打赏
  • 举报
回复
use Test_db
SELECT * INTO Import2 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=E:\LZJ\a.xls', 'SELECT A1 FROM [Sheet1$]')

服务器: 消息 7354,级别 16,状态 1,行 2
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 为列 'A1' 提供的元数据无效。The data type is not supported.
OLE DB 错误跟踪[Non-interface error: Column 'A1' (ordinal 1) of object 'SELECT A1 FROM [Sheet1$]' reported an unsupported value for DBTYPE of 0]。

SELECT * INTO Import2 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=E:\LZJ\a.xls', 'SELECT 名次 FROM [Sheet1$]')
则可以,但是还有一个问题,如果我的列名有相同的话,那又应该怎么办,比如说,我的A,G列第一行的标题
都是名次,又是怎么做的呀.如EXCEL表为
名次 会员简称 净空单 增减 名次 会员简称 增加 总空单 名次 会员简称 减少 总空单

我需要把前四列导致一个数据表中,中间四列导入另一表,最后四列导入第三个表.


yistudio 2005-05-26
  • 打赏
  • 举报
回复
'SELECT A1,B1,C1 FROM [Sheet1$]'
若不行将A1,B1,C1换成第一行的标题
LoveCleverDog 2005-05-26
  • 打赏
  • 举报
回复
兄弟,查一下帮助,以前做过。现在一时找不到了。不过帮助很详细,一看就能明白。

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧