sql導入excel語句
第一種,無法導入欄位名:(excel表不存在,新建)
EXEC master..xp_cmdshell
'bcp zhou.dbo.資料庫表名 out "c:\test.xls" /c /S "伺服器名" /U "用戶名" -P "密碼" '
第二種,excel文件已存在,要手工把表欄位名填到excel文件中去,再執行下面:
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;HDR=YES;DATABASE=c:\文件名.xls',sheet1$)
select * from 表名
② 把SQL資料庫表導入到Excel表
果從SQL資料庫中,導出數據到Excel,如果Excel文件已經存在,而且已經按照要接收的數據創建好表頭,就可以簡單的用:
insert
into
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel
5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)
select
*
from
表
--如果Excel文件不存在,也可以用BCP來導成類Excel的文件,注意大小寫:
--導出表的情況
EXEC
master..xp_cmdshell
'bcp
pubs.dbo.authors
out
c:\temp1.xls
-c
-q
-S"HUAWEI-CECF7A04"
-U"sa"
-P"sa"''
執行SQL語句導出:
EXEC
master..xp_cmdshell
'bcp
"SELECT
au_fname
FROM
pubs.dbo.authors"
queryout
c:\temp1.xls
-c
-S"HUAWEI-CECF7A04"
-U"sa"
-P"sa"'
注意以上c:\temp1.xls必須不存在
使用CopyFromRecordset將一個記錄集中的所有記錄一起寫入EXCEL
示例
本示例將
DAO
Recordset
對象中的欄位名稱復制到工作表的第一行中,並將這些名稱的格式設為加粗。然後,本示例將記錄集復制到工作表中,復制的起始位置在
A2
單元格。
For
iCols
=
0
to
rs.Fields.Count
-
1
ws.Cells(1,
iCols
+
1).Value
=
rs.Fields(iCols).Name
Next
ws.Range(ws.Cells(1,
1),
_
ws.Cells(1,
rs.Fields.Count)).Font.Bold
=
True
ws.Range("A2").CopyFromRecordset
rs
③ 如何把sql的數據表導入到excel中
一、在EXCEL中
新建一列,如把列名定為ab,下面放你的數據,比如1,2,3……
二、打開SQL
企業管理器
,
右擊
你所需要導入的資料庫,選擇導入數據,下一步,數據源選擇Microsoft
Eccel
97-2000,選擇excel文件繼續下一步,往下按,選擇Sheet1$或者2,3
看你把數據放在那一頁,點轉換可以根據你自己需要設置一些欄位屬性,目的里改一下表的名字(如果是要往已存在的表裡插數據,應該要選擇往目的表中追加數據,但
欄位名
應該要一樣,如果是添加新建表,選擇創建目的表),新建表的話,表名自己隨便寫什麼好了,容易記就好。設置完了就點下一步就導入了。當然可以先預覽一下。
如果不熟悉,建議還是添加新建表吧,再用insert語句把導入的數據插入到你所需要插入的表裡。
④ excel導入sql,用sql語句
1.打開SQL
Server
Management
Studio,按圖中的路徑進入導入數據界面。
2.導入的時候需要將EXCEL的文件准備好,不能打開。點擊下一步。
3.數據源:選擇「Microsoft
Excel」除了EXCEL類型的數據,SQL還支持很多其它數據源類型。
4.選擇需要導入的EXCEL文件。點擊瀏覽,找到導入的文件確定。
5.再次確認文件路徑沒有問題,點擊下一步。
6.默認為是使用的WINODWS身份驗證,改為使用SQL身份驗證。輸入資料庫密碼,注意:資料庫,這里看看是不是導入的資料庫。也可以在這里臨時改變,選擇其它資料庫。
7.選擇導入數據EXCEL表內容範圍,若有幾個SHEET表,或一個SHEET表中有些數據不想導入,則可以編寫查詢指定的數據進行導入。點擊下一步。
8.選擇需要導入的SHEET表,比如我在這里將SHEET表名改為price,則導入後生面的SQL資料庫表為price$。點擊進入下一步。
9.點擊進入下一步。
10.在這里完整顯示了導入的信息,執行內容,再次確認無誤後,點擊完成,開始執行。
11.可以看到任務執行的過程和進度。
12.執行成功:可以看看執行結果,已傳輸1754行,表示從EXCEL表中導入1754條數據,包括列名標題。這樣就完成了,執行SQL查詢語句:SELECT
*
FROM
price$就可以查看已導入的數據內容。
⑤ sqlyog導入excel數據的方法步驟
在 Excel 中錄入好數據以後可能會需要把數據給導入到sqlyog裡面,具體要怎麼導入excel數據呢?下面是由我分享的sqlyog導入excel數據的 方法 ,以供大家閱讀和學習。
sqlyog導入excel數據的方法sqlyog導入Excel步驟1:選擇菜單:Table→Import→Import External Data
sqlyog導入excel數據的方法圖1
sqlyog導入Excel步驟2:選擇是否使用舊job文件
sqlyog導入excel數據的方法圖2
sqlyog導入Excel步驟3:選擇數據源xls文件
sqlyog導入excel數據的方法圖3
sqlyog導入Excel步驟4:選擇要導入的資料庫
sqlyog導入excel數據的方法圖4
sqlyog導入Excel步驟5:選擇 導入方式,是拷貝文件數據還是使用select查詢語句
sqlyog導入excel數據的方法圖5
sqlyog導入Excel步驟6:選擇目標表
sqlyog導入excel數據的方法圖6
sqlyog導入Excel步驟7:選擇源數據和目標數據的欄位映射關系
sqlyog導入excel數據的方法圖7
sqlyog導入Excel步驟8:選擇對錯誤的處理方式
sqlyog導入excel數據的方法圖8
sqlyog導入Excel步驟9:選擇是否立即運行、保存為調度文件、記錄數據導入日誌
sqlyog導入excel數據的方法圖9
sqlyog導入Excel步驟10:檢查導入過程是否出現錯誤和警告
sqlyog導入excel數據的方法圖10
⑥ 怎麼寫sql語句將Excel的數據插入到SQL Server資料庫
方法和詳細的操作步驟如下:
1、第一步,准備Excel表,並希望將其導入SQL
Server 2012中的QearlTest資料庫,見下圖,轉到下面的步驟。
⑦ 如何實現把sql數據導入excel中
SQL語句導入導出大全
/******* 導出到excel
EXEC master..xp_cmdshell 』bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""』
/*********** 導入Excel
SELECT *
FROM OpenDataSource( 』Microsoft.Jet.OLEDB.4.0』,
』Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0』)...xactions
SELECT cast(cast(科目編號 as numeric(10,2)) as nvarchar(255))+』 』 轉換後的別名
FROM OpenDataSource( 』Microsoft.Jet.OLEDB.4.0』,
』Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0』)...xactions
/** 導入文本文件
EXEC master..xp_cmdshell 』bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword』
/** 導出文本文件
EXEC master..xp_cmdshell 』bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword』
或
EXEC master..xp_cmdshell 』bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword』
導出到TXT文本,用逗號分開
exec master..xp_cmdshell 』bcp "庫名..表名" out "d:\tt.txt" -c -t ,-U sa -P password』
BULK INSERT 庫名..表名
FROM 』c:\test.txt』
WITH (
FIELDTERMINATOR = 』;』,
ROWTERMINATOR = 』\n』
)
--/* dBase IV文件
select * from
OPENROWSET(』MICROSOFT.JET.OLEDB.4.0』
,』dBase IV;HDR=NO;IMEX=2;DATABASE=C:\』,』select * from [客戶資料4.dbf]』)
--*/
--/* dBase III文件
select * from
OPENROWSET(』MICROSOFT.JET.OLEDB.4.0』
,』dBase III;HDR=NO;IMEX=2;DATABASE=C:\』,』select * from [客戶資料3.dbf]』)
--*/
--/* FoxPro 資料庫
select * from openrowset(』MSDASQL』,
』Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\』,
』select * from [aa.DBF]』)
--*/
/**************導入DBF文件****************/
select * from openrowset(』MSDASQL』,
』Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data;
SourceType=DBF』,
』select * from customer where country != "USA" order by country』)
go
/***************** 導出到DBF ***************/
如果要導出數據到已經生成結構(即現存的)FOXPRO表中,可以直接用下面的SQL語句
insert into openrowset(』MSDASQL』,
』Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\』,
』select * from [aa.DBF]』)
select * from 表
說明:
SourceDB=c:\ 指定foxpro表所在的文件夾
aa.DBF 指定foxpro表的文件名.
/*************導出到Access********************/
insert into openrowset(』Microsoft.Jet.OLEDB.4.0』,
』x:\A.mdb』;』admin』;』』,A表) select * from 資料庫名..B表
/*************導入Access********************/
insert into B表 selet * from openrowset(』Microsoft.Jet.OLEDB.4.0』,
』x:\A.mdb』;』admin』;』』,A表)
********************* 導入 xml 文件
DECLARE @idoc int
DECLARE @doc varchar(1000)
--sample XML document
SET @doc =』
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied
</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue
white red">
<Urgency>Important</Urgency>
Happy Customer.
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
』
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement using OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, 』/root/Customer/Order』, 1)
WITH (oid char(5),
amount float,
comment ntext 』text()』)
EXEC sp_xml_removedocument @idoc
/********************導整個資料庫*********************************************/
用bcp實現的存儲過程
/*
實現數據導入/導出的存儲過程
根據不同的參數,可以實現導入/導出整個資料庫/單個表
調用示例:
--導出調用示例
----導出單個表
exec file2table 』zj』,』』,』』,』xzkh_sa..地區資料』,』c:\zj.txt』,1
----導出整個資料庫
exec file2table 』zj』,』』,』』,』xzkh_sa』,』C:\docman』,1
--導入調用示例
----導入單個表
exec file2table 』zj』,』』,』』,』xzkh_sa..地區資料』,』c:\zj.txt』,0
----導入整個資料庫
exec file2table 』zj』,』』,』』,』xzkh_sa』,』C:\docman』,0
*/
if exists(select 1 from sysobjects where name=』File2Table』 and objectproperty(id,』IsProcere』)=1)
drop procere File2Table
go
create procere File2Table
@servername varchar(200) --伺服器名
,@username varchar(200) --用戶名,如果用NT驗證方式,則為空』』
,@password varchar(200) --密碼
,@tbname varchar(500) --資料庫.dbo.表名,如果不指定:.dbo.表名,則導出資料庫的所有用戶表
,@filename varchar(1000) --導入/導出路徑/文件名,如果@tbname參數指明是導出整個資料庫,則這個參數是文件存放路徑,文件名自動用表名.txt
,@isout bit --1為導出,0為導入
as
declare @sql varchar(8000)
if @tbname like 』%.%.%』 --如果指定了表名,則直接導出單個表
begin
set @sql=』bcp 』+@tbname
+case when @isout=1 then 』 out 』 else 』 in 』 end
+』 "』+@filename+』" /w』
+』 /S 』+@servername
+case when isnull(@username,』』)=』』 then 』』 else 』 /U 』+@username end
+』 /P 』+isnull(@password,』』)
exec master..xp_cmdshell @sql
end
else
begin --導出整個資料庫,定義游標,取出所有的用戶表
declare @m_tbname varchar(250)
if right(@filename,1)<>』\』 set @filename=@filename+』\』
set @m_tbname=』declare #tb cursor for select name from 』+@tbname+』..sysobjects where xtype=』』U』』』
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql=』bcp 』+@tbname+』..』+@m_tbname
+case when @isout=1 then 』 out 』 else 』 in 』 end
+』 "』+@filename+@m_tbname+』.txt " /w』
+』 /S 』+@servername
+case when isnull(@username,』』)=』』 then 』』 else 』 /U 』+@username end
+』 /P 』+isnull(@password,』』)
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
go
/**********************Excel導到Txt****************************************/
想用
select * into opendatasource(...) from opendatasource(...)
實現將一個Excel文件內容導入到一個文本文件
假設Excel中有兩列,第一列為姓名,第二列為很行帳號(16位)
且銀行帳號導出到文本文件後分兩部分,前8位和後8位分開。
如果要用你上面的語句插入的話,文本文件必須存在,而且有一行:姓名,銀行賬號1,銀行賬號2
然後就可以用下面的語句進行插入
注意文件名和目錄根據你的實際情況進行修改.
insert into
opendatasource(』MICROSOFT.JET.OLEDB.4.0』
,』Text;HDR=Yes;DATABASE=C:\』
)...[aa#txt]
--,aa#txt)
--*/
select 姓名,銀行賬號1=left(銀行賬號,8),銀行賬號2=right(銀行賬號,8)
from
opendatasource(』MICROSOFT.JET.OLEDB.4.0』
,』Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls』
--,Sheet1$)
)...[Sheet1$]
如果你想直接插入並生成文本文件,就要用bcp
declare @sql varchar(8000),@tbname varchar(50)
--首先將excel表內容導入到一個全局臨時表
select @tbname=』[##temp』+cast(newid() as varchar(40))+』]』
,@sql=』select 姓名,銀行賬號1=left(銀行賬號,8),銀行賬號2=right(銀行賬號,8)
into 』+@tbname+』 from
opendatasource(』』MICROSOFT.JET.OLEDB.4.0』』
,』』Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls』』
)...[Sheet1$]』
exec(@sql)
--然後用bcp從全局臨時表導出到文本文件
set @sql=』bcp "』+@tbname+』" out "c:\aa.txt" /S"(local)" /P"" /c』
exec master..xp_cmdshell @sql
--刪除臨時表
exec(』drop table 』+@tbname)
用bcp將文件導入導出到資料庫的存儲過程:
/*--bcp-二進制文件的導入導出
支持image,text,ntext欄位的導入/導出
image適合於二進制文件;text,ntext適合於文本數據文件
注意:導入時,將覆蓋滿足條件的所有行
導出時,將把所有滿足條件的行也出到指定文件中
此存儲過程僅用bcp實現
鄒建 2003.08-----------------*/
/*--調用示例
--數據導出
exec p_binaryIO 』zj』,』』,』』,』acc_演示數據..tb』,』img』,』c:\zj1.dat』
--數據導出
exec p_binaryIO 』zj』,』』,』』,』acc_演示數據..tb』,』img』,』c:\zj1.dat』,』』,0
--*/
if exists (select * from dbo.sysobjects where id = object_id(N』[dbo].[p_binaryIO]』) and OBJECTPROPERTY(id, N』IsProcere』) = 1)
drop procere [dbo].[p_binaryIO]
GO
Create proc p_binaryIO
@servename varchar (30),--伺服器名稱
@username varchar (30), --用戶名
@password varchar (30), --密碼
@tbname varchar (500), --資料庫..表名
@fdname varchar (30), --欄位名
@fname varchar (1000), --目錄+文件名,處理過程中要使用/覆蓋:@filename+.bak
@tj varchar (1000)=』』, --處理條件.對於數據導入,如果條件中包含@fdname,請指定表名前綴
@isout bit=1 --1導出((默認),0導入
AS
declare @fname_in varchar(1000) --bcp處理應答文件名
,@fsize varchar(20) --要處理的文件的大小
,@m_tbname varchar(50) --臨時表名
,@sql varchar(8000)
--則取得導入文件的大小
if @isout=1
set @fsize=』0』
else
begin
create table #tb(可選名 varchar(20),大小 int
,創建日期 varchar(10),創建時間 varchar(20)
,上次寫操作日期 varchar(10),上次寫操作時間 varchar(20)
,上次訪問日期 varchar(10),上次訪問時間 varchar(20),特性 int)
insert into #tb
exec master..xp_getfiledetails @fname
select @fsize=大小 from #tb
drop table #tb
if @fsize is null
begin
print 』文件未找到』
return
end
end
--生成數據處理應答文件
set @m_tbname=』[##temp』+cast(newid() as varchar(40))+』]』
set @sql=』select * into 』+@m_tbname+』 from(
select null as 類型
union all select 0 as 前綴
union all select 』+@fsize+』 as 長度
union all select null as 結束
union all select null as 格式
) a』
exec(@sql)
select @fname_in=@fname+』_temp』
,@sql=』bcp "』+@m_tbname+』" out "』+@fname_in
+』" /S"』+@servename
+case when isnull(@username,』』)=』』 then 』』
else 』" /U"』+@username end
+』" /P"』+isnull(@password,』』)+』" /c』
exec master..xp_cmdshell @sql
--刪除臨時表
set @sql=』drop table 』+@m_tbname
exec(@sql)
if @isout=1
begin
set @sql=』bcp "select top 1 』+@fdname+』 from 』
+@tbname+case isnull(@tj,』』) when 』』 then 』』
else 』 where 』+@tj end
+』" queryout "』+@fname
+』" /S"』+@servename
+case when isnull(@username,』』)=』』 then 』』
else 』" /U"』+@username end
+』" /P"』+isnull(@password,』』)
+』" /i"』+@fname_in+』"』
exec master..xp_cmdshell @sql
end
else
begin
--為數據導入准備臨時表
set @sql=』select top 0 』+@fdname+』 into 』
+@m_tbname+』 from 』 +@tbname
exec(@sql)
--將數據導入到臨時表
set @sql=』bcp "』+@m_tbname+』" in "』+@fname
+』" /S"』+@servename
+case when isnull(@username,』』)=』』 then 』』
else 』" /U"』+@username end
+』" /P"』+isnull(@password,』』)
+』" /i"』+@fname_in+』"』
exec master..xp_cmdshell @sql
--將數據導入到正式表中
set @sql=』update 』+@tbname
+』 set 』+@fdname+』=b.』+@fdname
+』 from 』+@tbname+』 a,』
+@m_tbname+』 b』
+case isnull(@tj,』』) when 』』 then 』』
else 』 where 』+@tj end
exec(@sql)
--刪除數據處理臨時表
set @sql=』drop table 』+@m_tbname
end
--刪除數據處理應答文件
set @sql=』del 』+@fname_in
exec master..xp_cmdshell @sql
go
/** 導入文本文件
EXEC master..xp_cmdshell 』bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword』
改為如下,不需引號
EXEC master..xp_cmdshell 』bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword』
/** 導出文本文件
EXEC master..xp_cmdshell 』bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword』
此句需加引號
⑧ mysql sql語句導入excel
1.數據透視視圖是處理Excel常用的手段,而應用數據透視視圖的第一步就是導入數據,如本例中,表中有889167行數據,那麼將這些數據導入Excel表中將是一個很漫長的過程,可以藉助SQL語句選擇性的導入數據,以此來提交數據載入的速度。