當前位置:首頁 » 編程語言 » sql導數據

sql導數據

發布時間: 2024-06-01 11:14:53

A. 怎麼定時自動將sql數據導出為Excel文件

1、編寫SQL存儲過程(procere);
2、使用SQL的BCP與exec master..xp_cmdshell命令完成指定數據表或內容導出;
3、使用SQL Server代理作業實現定時自動執行導出。
下面是過程詳解,若你還有更好的方式,盼告知。

工具/原料

SQL Server Management Studio
BCP與exec master..xp_cmdshell
方法/步驟

1
Create一個新的procere,在開頭可以做一個判斷來決定什麼時候執行數據結果導出,下面來看看這個存儲過程:
Create procere [dbo].[pr_Dept_Bak]

as
begin
---這里可以增加對數據表的查詢條件或更多的數據處理;
---將結果放入一個新的數據表,然後將這個新表導出EXCEL文件;
declare @file_path varchar(200);--導出EXCEl文件的路徑;
declare @file_name varchar(200);--導出EXCEl的文件名;
declare @exec_sql varchar(200);--SQL語句;
---分開定義是為了以後修改路徑或文件名更方便。
set @file_path = 'E:\Dept_Bak\'
set @file_name = 'dept' + CONVERT(varchar(100), GETDATE(), 112)+'.xls'
set @exec_sql = 'select * from book.dbo.users_dept' ---數據表使用的完整路徑;
set @exec_sql = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -U "sa" -P "SQLpassword"';
----U "sa" -P "SQLpassword" 這是資料庫的sa賬號和密碼;
exec master..xp_cmdshell @exec_sql
end

2
以上存儲過程pr_Dept_Bak建立,需要導出的數據表是users_dept,導出的位置是資料庫本地計算機的E:\Dept_Bak文件夾下。需要將這個文件夾建立好。

3
准備好之後,我們需要進行測試一下pr_Dept_Bak是否成功,執行pr_Dept_Bak存儲過程,可以看到執行結果是成功的,若這里不成功,則需要檢查一下帶存儲過程中的BCP與exec master..xp_cmdshell命令的格式是否正確。

4
導出功能實現了,現在需要設置定時自動執行導出。在SQL Server Management Studio中,SQL Server代理-作業-新建作業。

5
為新的作業設定名稱,可以中文或英文,只是為了方便區分其它作業。

6
在步驟中,點擊新建作業執行步驟。即需要定時自動執行的存儲過程pr_Dept_Bak。為什麼使用的存儲過程,也是因為以後需要添加或修改功能更方便,而且存儲過程更文件測試問題所在。

7
注意選擇資料庫,命令中輸入exec pr_Dept_Bak 執行存儲過程。因為命令語句都在存儲過程中,所以這里就相對比較簡單。

8
最後就是設定定時自動執行計劃,如每天的XX時間自動執行這個存儲過程,或間隔多少小時導出SQL表一次。

9
作業建立之後,則可以執行作業步驟來測試一次,是成功,右鍵點擊建立的作業pr_Dept_Bak,作業開始步驟。

10
作業成功,若不成功,可以看到錯誤提示,可以在作業活動監視器中查看作業失敗的原因,針對解決問題。

11
到E:\Dept_Bak文件夾下,可以看到導出的EXCEL文件了,接下來還可以使用的SQL的郵件功能,自動將這個EXCEL文件發送給指定的郵箱接收者。

B. 如何用sql將資料庫的數據導出來

工具/原料
SQL資料庫
導出數據
確定資料庫有數據。在我們導入導出時首先確保資料庫里有數據,否者竹籃打水一場空,白忙活了一場,什麼結果都沒有,這是最痛苦的事情。
新建一個EXCEL文檔。我們想要把數據保存什麼地方就新建一個對應格式的文檔,例如:TXT,EXCEL等,這里咱們保存在EXCEL表格里,如下圖,我在桌面小旺經驗文件夾里創建一個EXCEL表格文檔,等會導出的數據放在這里。
選擇要導出數據的資料庫。我們今天導出的是MyKTV資料庫的數據,右鍵【MyKtv】資料庫選擇【任務】--選擇【導出數據】選項。
4
出現如下窗體,點擊下一步。

C. 導出sql資料庫數據的方法有幾種方式

1. SQL Server導入導出向導,這種方式是最方便的.

導入向導,微軟提供了多種數據源驅動,包括SQL Server Native Cliant, OLE DB For Oracle,Flat File Source,Access,Excel,XML等,基本上可以滿足系統開發的需求.
同樣導出向導也有同樣多的目的源驅動,可以把數據導入到不同的目的源.
對資料庫管理人員來說這種方式簡單容易操作,導入時SQL Server也會幫你建立相同結構的Table.

2. 用.NET的代碼實現(比如有一個txt或是excel的檔案,到讀取到DB中)
2.1 最為常見的就是循環讀取txt的內容,然後一條一條的塞入到Table中.這里不再贅述.
2.2 集合整體讀取,使用OLEDB驅動.
代碼如下:

代碼
string strOLEDBConnect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\1\;Extended Properties='text;HDR=Yes;FMT=Delimited'";
OleDbConnection conn = new OleDbConnection(strOLEDBConnect);
conn.Open();
SQLstmt = "select * from 1.txt";//讀取.txt中的數據
DataTable dt=new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(SQLstmt, conn);
da.Fill(dt);//在DataSet的指定范圍中添加或刷新行以匹配使用DataSet、DataTable 和IDataReader 名稱的數據源中的行。
if(dt.Rows.Count>0)
foreach(DataRow dr in dt.Rows)
{
SQLstmt = "insert into MyTable values('" + dr..."

3.BCP,可以用作大容量的數據導入導出,也可以配合來使用.
語法:

代碼
bcp {[[database_name.][schema].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-mmax_errors] [-fformat_file] [-x] [-eerr_file]
[-Ffirst_row] [-Llast_row] [-bbatch_size]
[-ddatabase_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )]
[-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term]
[-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
[-S [server_name[\instance_name]]] [-Ulogin_id] [-Ppassword]
[-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

請注意數據導入導出的方向參數:in,out,queryout
如:

如:

4.BULK INSERT. T-SQL的命令,允許直接導入數據
語法:

BULK INSERT
[ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
(
[ [ , ] BATCHSIZE =batch_size ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ [ , ] DATAFILETYPE =
{ 'char' | 'native'| 'widechar' | 'widenative' } ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] FORMATFILE ='format_file_path' ]
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] KILOBYTES_PER_BATCH =kilobytes_per_batch ]
[ [ , ] LASTROW =last_row ]
[ [ , ] MAXERRORS =max_errors ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] ROWS_PER_BATCH =rows_per_batch ]
[ [ , ] ROWTERMINATOR ='row_terminator' ]
[ [ , ] TABLOCK ]
[ [ , ] ERRORFILE ='file_name' ]
)]

重要參數:

FIELDTERMINATOR,欄位分隔符
FIRSTROW:第一個數據行
ROWTERMINATOR:行終結符
如:

BULK INSERT dbo.ImportTest
FROM 'C:\ImportData.txt'
WITH ( FIELDTERMINATOR =',', FIRSTROW = 2 )

5. OPENROWSET也是T-SQL的命令,包含有DB連接的信息和其它導入方法不同的是,OPENROWSET可以作為一個目標表參與INSERT,UPDATE,DELETE操作.
語法:

OPENROWSET
( { 'provider_name', { 'datasource';'user_id';'password'
| 'provider_string' }
, { [ catalog. ] [ schema. ] object
| 'query'
}
| BULK 'data_file',
{ FORMATFILE ='format_file_path' [ <bulk_options> ]
| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )<bulk_options> ::=
[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ , ERRORFILE ='file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH =rows_per_batch ]

如:

INSERT INTO dbo.ImportTest
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\ImportData.xls', 'SELECT * FROM [Sheet1$]') WHERE A1 IS NOT NULL

6.OPENDATASOURCE
語法:
OPENDATASOURCE ( provider_name,init_string )

如:

INSERT INTO dbo.ImportTest
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\ImportData.xls;Extended Properties=Excel 8.0')...[Sheet1$]

7.OPENQUERY.是在linked server的基礎上執行的查詢.所以執行之前必須先建立好link server.OPENQUERY的結果集可以作為一個table參與DML的操作.

語法:
OPENQUERY (linked_server ,'query')

如:

EXEC sp_addlinkedserver 'ImportData',
'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0',
'C:\ImportData.xls',
NULL,
'Excel 8.0'
GO

INSERT INTO dbo.ImportTest
SELECT *
FROM OPENQUERY(ImportData, 'SELECT * FROM [Sheet1$]')

D. 在sql server2000中如何導出數據

1、打開資料庫選擇所需要操作的資料庫。

E. SQL資料庫怎麼導入導出數據(sql資料庫如何導入數據)

MySQL命令行導出資料庫備嘩:

1,進入MySQL目錄下的bin文件夾:cdMySQL中到bin文件夾的目錄

如我輸入的命令行:cdC:ProgramFilesMySQLMySQLServer4.1in

(或者直接將windows的環境變數path中添加該目錄)

2,導出資料庫:mysqlmp-u用戶名-p資料庫名<導出的文件名

如我輸入的命令行:mysqlmp-uroot-pnews

(如果導出單張表的話在資料庫名後面輸入表名即可)

3、會看到仿老行文件news.sql自動生成到bin文件下

命令行導入資料庫:

1,將要導入的.sql文件移至bin文件下,這樣的路徑比較方便

2,同上面導出的第1步

3,進入MySQL:mysql-u用戶名-p

如我輸入的命令行:mysql-uroot-p(輸入同樣後會讓你輸入MySQL的密碼)

4,在MySQL-Front中新建你要建的資料庫,這時是空資料庫,如新建一個名為news的目標資料庫

5,輸入:mysql

如我輸入的命令行:mysql

6,導入文件:mysql

如含芹我輸入的命令行:mysql

F. SQLServer中導入導出數據的三種方式(一)

在我們建立一個資料庫時,並且想將分散在各處的不同類型的資料庫分兆棚裂類匯總在這個新建的資料庫中時,尤其是在進行數據檢驗、凈化和轉換時,將會面臨很大的挑戰。幸好SQL Server為我們提供了強大、豐富的數據導入導出功能,並且在導入導出的同時可以對數據進行靈活的處理。

在SQL Server中主要有三族閉種方式導入導出數據:使用Transact-SQL對數據進行處理;調用命令行工具BCP處理數據;使用數據轉換服務(DTS)對數據進行處理。這三種方法各有其特點,下面就它們的主要特點進行比較。

一、使用方式的比較

1. 使用Transact-SQL進行數據導入導出

我們很容易看出,Transact-SQL方法就是通過SQL語句方式將相同或不同類型的資料庫中的數據互相導入導出或者匯集在一處的方法。如果是在不同的SQL Server資料庫之間進行數據導入導出,那將是非常容易做到的。一般可使用SELECT INTO FROM和INSERT INTO。使用 SELECT INTO FROM時INTO後跟的表必須存在,也就是說它的功能是在導數據之前先建立一個空表,然後再將源表中的數據導入到新建的空表中,這就相當於表的復制(並不會復製表的索引等信息)。而INSERT INTO的功能是將源數據插入到已經存在的表中,可以使用它進行數據合並,如果要更新已經存在的記錄,可以使用UPDATE。

SELECT * INTO table2 FROM table1
--table1和table2的表結構相同
INSERT INTO table2 SELECT * FROM table3
--table2和table3的表結構相同

當在異構資料庫之間的進行數據導入導出時,情況會變得復雜得多。首先要解決的是如何打開非SQL Server資料庫的問題。

在SQL Server中提供了兩個函數可以根據各種類型資料庫的OLE DB Provider打開並操作這些資料庫,這兩個函數是OPENDATASOURCE和OPENROWSET。它們的功能基本上相同,不同之處主要有兩點。

(1) 調用方式不同。

OPENDATASOURCE的參數有兩個,分別是OLE DB Provider和連接字元串。使用OPENDATASOURCE只相當於引用資料庫或者是服務(對於SQL Server、Oracle等資料庫來說)。要想引用其中的和搭數據表或視圖,必須在OPENDATASOURCE(...)後進行引用。

在SQL Server中通過OPENDATASOURCE查詢Access資料庫abc.mdb中的table1表

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;Persist Security
Info=False')...
table1

OPENROWSET相當於一個記錄集,可以將直接當成一個表或視圖使用。

在SQL Server中通過OPENROWSETE查詢Access資料庫abc.mdb中的table1表

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'abc.mdb';
'admin';'','SELECT * FROM table1')

熱點內容
qq空間本地上傳的音樂 發布:2024-11-27 06:14:50 瀏覽:920
辦公室雲電腦伺服器 發布:2024-11-27 06:11:45 瀏覽:26
有趣的php 發布:2024-11-27 05:58:13 瀏覽:960
php網頁開發 發布:2024-11-27 05:56:09 瀏覽:956
手機密碼鎖忘記怎麼辦 發布:2024-11-27 05:54:35 瀏覽:153
安卓怎麼獲取聯系人位置 發布:2024-11-27 05:53:58 瀏覽:49
最新雲呼伺服器地址 發布:2024-11-27 05:49:35 瀏覽:944
我的世界伺服器玩家 發布:2024-11-27 05:49:20 瀏覽:320
python正則compile 發布:2024-11-27 05:19:05 瀏覽:29
資料庫系統概論第四版ppt 發布:2024-11-27 04:59:52 瀏覽:412