日期:2014-05-18  浏览次数:20407 次

SQL与Excel问题
请问如何在SQL2000的数据库中使用语句把Excel表中的数据导入的数据库中?

------解决方案--------------------
SQL code

select * into # from OPENROWSET('microsoft.jet.oledb.4.0','Excel 5.0;hdr=yes;database=d:\1月安排.xls',sheet$)

------解决方案--------------------
一、打開另外一個數據庫

1.

打開SQL server2000的另一個數據庫的表

(1). select * from openrowset('sqloledb','sprogram';'develop';'11111','select * from kind')

(2). select * from openrowset('sqloledb','190.1.1.247';'develop';'11111','select * from kind')

(3). select * from opendatasource('sqloledb','data source=sprogram;user ID=develop;Password=11111').new_ks.dbo.kind

 

2.

打開Access2000的一個表

(1). select * from OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0','Data Source=e:\north.mdb;User ID=Admin;Password=')...supply 

(2). select * from openrowset('Microsoft.Jet.OLEDB.4.0', 

'e:\north.mdb';'admin';'',supply)

(3). select * from openrowset('Microsoft.Jet.OLEDB.4.0', 

'e:\north.mdb';'admin';'','select * from supply where 供應商編號>10')

 

3.

打開Excel的一個表

(1). select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=e:\test.xls',sheet1$)

(2). select * into 表 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=e:\test1.xls',sheet3$)

 

二、導入與導出

1. 用BCP工具導入導出

(1)xls文件

EXEC master..xp_cmdshell 'bcp "SELECT class_no,kind_no,cn_name FROM new_ks.dbo.kind ORDER BY 1,2" queryout "e:\test3.xls" -c -q -S"sprogram" -U"develop" -P"12345"'

 

(2)/** 导入文本文件

--入SQLServer

select * into 你的表 from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\temp;','select * from contact.txt')

--查詢導出

EXEC master..xp_cmdshell 'bcp "SELECT class_no,kind_no,cn_name FROM new_ks.dbo.kind ORDER BY 1,2" queryout "e:\TX1.txt" -c -q -S"sprogram" -U"develop" -P"12345"'

--直接导出到txt文件

EXEC master..xp_cmdshell 'bcp DB_MRP.dbo.dept out "e:\TX3.txt" -c -S"GUIDE-1" -U"develop" -P"12345"' 

--直接导出到xls文件
EXEC master..xp_cmdshell 'bcp DB_MRP.dbo.dept out "e:\TX3.xls" -c -S"GUIDE-1" -U"develop" -P"12345"' 

 

--直接導入

EXEC master..xp_cmdshell 'bcp "數據庫.dbo.數據表" in c:\DT.txt -c -S服務器名 -U用戶 -P密碼'

EXEC master..xp_cmdshell 'bcp hdh.dbo.kind in "e:\TX1.txt" -c -q -S -U -P'

EXEC master..xp_cmdshell 'bcp hdh.dbo.kind in "e:\test3.xls" -c -q -S -U -P'

 

--用BULK INSERT導入

BULK INSERT hdh.dbo.kind

FROM 'e:\tx1.txt'

WITH (

FIELDTERMINATOR = '\t',

ROWTERMINATOR = '\n'

)

前提條件是表如kind要存在,而且字段與test.txt字段數目要一樣多

在查詢分析器中運行,而且是以sa用戶登錄

 

bulk insert tbyhhk from 'c:\t.txt' with( formatfile='c:\bcp.txt')


------解决方案--------------------
SQL code
SELECT a.* into tb_name
FROM openrowset('Microsoft.Jet.OLEDB.4.0','Excel 8.0;hdr=Yes;DataBase=盘符:\文件名.xls',工作表名$)
   AS a
GO