sql server 數(shù)據(jù)的導(dǎo)入導(dǎo)出命令
一、將.dbf(foxpro數(shù)據(jù)文件)導(dǎo)入到sql server中:
-------------如果接受導(dǎo)入數(shù)據(jù)的SQL表不存在,導(dǎo)入時(shí)創(chuàng)建
select * into 要生成的SQL表名 from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from dbf表名.DBF')
實(shí)例:
--導(dǎo)入mdf數(shù)據(jù)文件
select * into t_tdd from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=d:\我的文檔\桌面\寧夏第一次數(shù)據(jù)','select * from [t_tdd.DBF]')
在執(zhí)行命令前,要下載了一個(gè)microsoft ole db provider for visual foxpro安裝,可以了。
在使用該命令時(shí),有時(shí)會(huì)出現(xiàn)如下錯(cuò)誤提示:
SQL Server 阻止了對(duì)組件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的訪問(wèn),因?yàn)榇私M件已作為此服務(wù)器安全配置的一部分而被關(guān)閉。系統(tǒng)管理員可以通過(guò)使用 sp_configure 啟用 'Ad Hoc Distributed Queries'。有關(guān)啟用 'Ad Hoc Distributed Queries' 的詳細(xì)信息,請(qǐng)參閱 SQL Server 聯(lián)機(jī)叢書中的 "外圍應(yīng)用配置器"。
查詢相關(guān)資料,找到解決方法:
啟用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
使用完成后,關(guān)閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
--如果接受導(dǎo)入數(shù)據(jù)的SQL表已經(jīng)存在
Insert Into 已經(jīng)存在的SQL表名 Select * From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')
最快的方法,用SQLServer連接DBF
在SQLServer中執(zhí)行
SELECT * into bmk
FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,
’Data Source=”e:\share”;User ID=Admin;Password=;Extended properties=dBase 5.0’)...bmk
這樣就可以把e:\share中的bmk.dbf表導(dǎo)入到Sqlserver中,
速度是最快的
注:OPENDATASOURCE 和openrowset不接受參數(shù)變量。
二、SQL SERVER 和EXCEL的數(shù)據(jù)導(dǎo)入導(dǎo)出
1、在SQL SERVER里查詢Excel數(shù)據(jù):
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...
[Sheet1$]
下面是個(gè)查詢的示例,它通過(guò)用于 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel
5.0')...xactions
2、將Excel的數(shù)據(jù)導(dǎo)入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...
[Sheet1$]
實(shí)例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel
5.0')...xactions
3、將SQL SERVER中查詢到的數(shù)據(jù)導(dǎo)成一個(gè)Excel文件
-- ======================================================
T-SQL代碼:
EXEC master..xp_cmdshell 'bcp 庫(kù)名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
參數(shù):S 是SQL服務(wù)器名;U是用戶;P是密碼
說(shuō)明:還可以導(dǎo)出文本文件等多種格式
實(shí)例: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'
4、在SQL SERVER里往Excel插入數(shù)據(jù):
-- ======================================================
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, produkt) VALUES (20, 'Test')
SELECT * INTO excelimport FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=F:\班級(jí)與教學(xué)資料\05網(wǎng)一班資料\test.xls', 'SELECT * FROM [Sheet1$]')
三、SQL SERVER 和ACCESS的數(shù)據(jù)導(dǎo)入導(dǎo)出
常規(guī)的數(shù)據(jù)導(dǎo)入導(dǎo)出:
使用DTS向?qū)нw移你的Access數(shù)據(jù)到SQL Server,你可以使用這些步驟:
1在SQL SERVER企業(yè)管理器中的Tools(工具)菜單上,選擇Data Transformation
2Services(數(shù)據(jù)轉(zhuǎn)換服務(wù)),然后選擇 czdImport Data(導(dǎo)入數(shù)據(jù))。
3在Choose a Data Source(選擇數(shù)據(jù)源)對(duì)話框中選擇Microsoft Access as the Source,然后鍵
入你的.mdb數(shù)據(jù)庫(kù)(.mdb文件擴(kuò)展名)的文件名或通過(guò)瀏覽尋找該文件。
4在Choose a Destination(選擇目標(biāo))對(duì)話框中,選擇Microsoft OLE DB Prov ider for SQL
Server,選擇數(shù)據(jù)庫(kù)服務(wù)器,然后單擊必要的驗(yàn)證方式。
5在Specify Table Copy(指定表格復(fù)制)或Query(查詢)對(duì)話框中,單擊Copy tables(復(fù)制表格
)。
6在Select Source Tables(選擇源表格)對(duì)話框中,單擊Select All(全部選定)。下一步,完成。
Transact-SQL語(yǔ)句進(jìn)行導(dǎo)入導(dǎo)出:
1. 在SQL SERVER里查詢access數(shù)據(jù):
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
2.將access導(dǎo)入SQL server
-- ======================================================
在SQL SERVER 里運(yùn)行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
3. 將SQL SERVER表里的數(shù)據(jù)插入到Access表中
-- ======================================================
在SQL SERVER 里運(yùn)行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名
(列名1,列名2)
select 列名1,列名2 from sql表
實(shí)例:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\db.mdb';'admin';'', Test)
select id,name from Test
說(shuō)明:
其中我是想把我的sqlserver test 表數(shù)據(jù)導(dǎo)入到access 數(shù)據(jù)庫(kù)c:\db.mdb中test表中,access數(shù)據(jù)庫(kù)中的表Test表必須先存在。測(cè)試成功.
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename
總結(jié):利用以上語(yǔ)句,我們可以方便地將SQL SERVER、ACCESS和EXCEL電子表格軟件中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,為我們提供了極大方便!