當前位置:首頁 » 編程語言 » sql導出數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql導出數據

發布時間: 2022-02-07 22:17:42

『壹』 如何導出sql文件

1. 概述
MySQL資料庫的導入,有兩種方法:
1) 先導出資料庫SQL腳本,再導入;
2) 直接拷貝資料庫目錄和文件。
在不同操作系統或MySQL版本情況下,直接拷貝文件的方法可能會有不兼容的情況發生。
所以一般推薦用SQL腳本形式導入。下面分別介紹兩種方法。
Linux下:
2. 方法一 SQL腳本形式
操作步驟如下:
2.1. 導出SQL腳本
在原資料庫伺服器上,可以用phpMyAdmin工具,或者mysqlmp(mysqlmp命令位於mysql/bin/目錄中)命令行,導出SQL腳本。
2.1.1 用phpMyAdmin工具
導出選項中,選擇導出「結構」和「數據」,不要添加「DROP DATABASE」和「DROP TABLE」選項。
選中「另存為文件」選項,如果數據比較多,可以選中「gzipped」選項。
將導出的SQL文件保存下來。
2.1.2 用mysqlmp命令行
命令格式
mysqlmp -u用戶名 -p 資料庫名 > 資料庫名.sql
範例:
mysqlmp -uroot -p abc > abc.sql
(導出資料庫abc到abc.sql文件)
提示輸入密碼時,輸入該資料庫用戶名的密碼。
2.2. 創建空的資料庫
通過主控界面/控制面板,創建一個資料庫。假設資料庫名為abc,資料庫全權用戶為abc_f。
2.3. 將SQL腳本導入執行
同樣是兩種方法,一種用phpMyAdmin(mysql資料庫管理)工具,或者mysql命令行。
2.3.1 用phpMyAdmin工具
從控制面板,選擇創建的空資料庫,點「管理」,進入管理工具頁面。
在"SQL"菜單中,瀏覽選擇剛才導出的SQL文件,點擊「執行」以上載並執行。
注意:phpMyAdmin對上載的文件大小有限制,php本身對上載文件大小也有限制,如果原始sql文件
比較大,可以先用gzip對它進行壓縮,對於sql文件這樣的文本文件,可獲得1:5或更高的壓縮率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
2.3.2 用mysql命令行
命令格式
mysql -u用戶名 -p 資料庫名 < 資料庫名.sql
範例:
mysql -uabc_f -p abc < abc.sql
(導入資料庫abc從abc.sql文件)
提示輸入密碼時,輸入該資料庫用戶名的密碼。
3 方法二 直接拷貝
如果資料庫比較大,可以考慮用直接拷貝的方法,但不同版本和操作系統之間可能不兼容,要慎用。
3.1 准備原始文件
用tar打包為一個文件
3.2 創建空資料庫
3.3 解壓
在臨時目錄中解壓,如:
cd /tmp
tar zxf mydb.tar.gz
3.4 拷貝
將解壓後的資料庫文件拷貝到相關目錄
cd mydb/
cp * /var/lib/mysql/mydb/
對於FreeBSD:
cp * /var/db/mysql/mydb/
3.5 許可權設置
將拷貝過去的文件的屬主改為mysql:mysql,許可權改為660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
把mysqlmp出來的數據修改一下。除了要把表增加上) TYPE=MyISAM CHARACTER SET gbk;以外,在下面再增加一句SET NAMES GBK;
這樣,數據就可以平滑的導入4.1了,而不必怕出現亂碼。
Windows下:
DOS窗口
開始->運行->cmd
導出為:mysqlmp -u 用戶名 -p --opt 資料庫用戶名 > 資料庫名.sql
輸入你的資料庫密碼!
導入為:mysql -u 用戶名 -p 資料庫用戶名 < 資料庫名.sql (要在當前目錄下操作)

『貳』 sql server怎麼導出數據

1、在成功登錄之後,找到要導出的資料庫,右擊-->任務-->導出數據

2、直接點擊下一步

3、會出現一個新窗口,「目標」表示的是我們要把資料庫倒入盛什麼格式的文件,在這里,我選擇的是默認的,繼續「下一步」

4、選擇「復制一個或多個表或試圖的數據」

5、選中要導出的數據

6、繼續「下一步」

7、點擊「完成」,即可完成數據的導出

『叄』 sql 如何導出資料庫

SQLSERVER 使用 bcp或者DTS
DB2 使用 IMPORT,EXPORT,LOAD
Oracle使用imp,exp,sqlldr
看你使用什麼資料庫,去網路找找也行,去資料庫提供的文檔也行。

『肆』 如何把sql資料庫導出為一個數據文件

用備份資料庫的方式可以將sql資料庫導出成一個數據文件。

工具:SQL Server Managerment Studio

步驟:

1、打開SQL Server Managerment Studio,登錄資料庫。

5、最後等待執行結束即可。

『伍』 怎麼從sql 資料庫導出部分數據

現有員工表A一張 ,要求抽取員工表中年紀小於25的數據單獨存於B表
A表結構:
id、name、age

sql語法:
create table B as select id,name,age from A where age<25

不知是不是你要的效果

『陸』 導出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$]')

『柒』 怎樣將SQL數據導出到EXCEL中

實現步驟: 1、打開MicroSoft Excel 2000 2、文件(F)→新建(N)→工作簿→ 3、輸入SQL*Loader將Excel數據後,存檔為test.xls, 4、文件(F)→另存為(A)→ 保存類型為:製表符分隔,起名為text.txt,保存到C: 5、須先創建表結構: 連入SQL*Plus,以system/manager用戶登錄, 以下是代碼片段: SQL> conn system/manager 創建表結構 以下是代碼片段: SQL> create table test ( id number,--序號 usernamevarchar2(10),--用戶名 passwordvarchar2(10),--密碼 sj varchar2(20) --建立日期 ); 6、創建SQL*Loader輸入數據Oracle資料庫所需要的文件,均保存到C:,用記事本編輯: 控制文件:input.ctl,內容如下: load data --1、控制文件標識 infile 'test.txt' --2、要輸入的數據文件名為test.txtappend into table test--3、向表test中追加記錄 fields terminated by X'09'--4、欄位終止於X'09',是一個製表符(TAB) (id,username,password,sj) -----定義列對應順序 a、insert,為預設方式,在SQL*Loader將Excel數據裝載開始時要求表為空 b、append,在表中追加新記錄 c、replace,刪除舊記錄,替換成新裝載的記錄 d、truncate,同上 7、在DOS窗口下使用SQL*Loader命令實現數據的輸入 以下是代碼片段: C:>sqlldr userid=system/manager control=input.ctl 默認日誌文件名為:input.log 默認壞記錄文件為:input.bad 如果是遠程對SQL*Loader將Excel資料庫進行導入Oracle資料庫操作,則輸入字元串應改為: 以下是代碼片段: C:>sqlldr control=input.ctl 8、連接到SQL*Plus中,查看是否成功輸入,可比較input.log與原test.xls文

『捌』 sql資料庫怎麼導出數據到sql

打開SQL Server Management Studio,在對象資源管理器中,展開「SQL Server 實例」→「資料庫」→「MySchool」節點,單擊滑鼠右鍵,選擇「任務」→「導出數據」命令。出現導入和導出向導的歡迎界面,單擊「下一步」按鈕,出現「選擇數據源」對話框,如圖

在「選擇數據源」對話框中設置如下選項:
數據源:SQL Native Client 10.0。
伺服器名稱:DC。
身份驗證:Windows身份驗證。
資料庫:MySchool。
單擊「下一步」按鈕,出現「選擇目標」對話框,設置如下選項(如圖所示):
目標:平面文件目標。
文件名:C:\student.txt。
格式:帶分隔符。

單擊「下一步」按鈕,出現「指定表復制或查詢」對話框,如圖所示。

在「指定表復制或查詢」對話框中選中「復制一個或多個表或視圖的數據」單選按鈕,單擊「下一步」按鈕,出現「配置平面文件目標」對話框,如圖所示。

設置源表或源視圖為MySchool.dbo.student,單擊「下一步」按鈕。
在「保存並執行包」對話框中選中「立即執行」復選框,如圖所示,然後單擊「下一步」按鈕。

在如圖所示的對話框中單擊「完成」按鈕。

如圖所示,當執行完後,單擊「關閉」按鈕。

8
在Windows資源管理器中打開C:\student.txt文件,驗證導出的結果。

『玖』 SQL語句 導入導出

奇怪以前這里有很多這種2個資料庫之間導數據的問題,而且也不乏高分提問的,可是都沒什麼人回答,也沒什麼好的建議,今天一下子冒出這么多人來。。
留個標記,關注,學習ING~

『拾』 SQL按條件導出數據

select*fromt1b,

(selecta.stb_id,max(a.change_date)aschange_datefromt1awherea.after_status='active'

groupbya.stb_id)c

whereb.stb_id=c.stb_idandb.change_date=c.change_date;


sqlserver2005試過可以


是不是我給的sql查到的記錄多了

可能是std_id和change_date相同的記錄不止一條

增加條件,如果std_id和change_date相同的記錄不止一條則選id最大的

改為

select*fromt1b,

(selecta.stb_id,max(a.change_date)aschange_date,max(a.id) as id fromt1awherea.after_status='active'

groupbya.stb_id)c

whereb.stb_id=c.stb_idandb.change_date=c.change_date and b.id = c.id;


新需求

insert into 新表

select b.* fromt1b,

(selecta.stb_id,max(a.change_date)aschange_date,max(a.id) as id fromt1awherea.after_status='active'

groupbya.stb_id)c

whereb.stb_id=c.stb_idandb.change_date=c.change_date and b.id = c.id;


試試看,b.*這種寫法應該支持,插入的是所有的時間最近的數據,如果要取部分,那你再加上新的過濾條件了