家居建材網(wǎng)站源碼seo 優(yōu)化案例
相關(guān)背景:
對(duì)于數(shù)據(jù)分析同學(xué),一般SQL,EXCEL是必備技能,但對(duì)于VBA和Python可能有的同學(xué)不會(huì);在處理本地?cái)?shù)據(jù)上(諸如excel、txt|csv文本),后續(xù)嘗試使用VBA或者Python寫一個(gè)sql查詢的GUI界面(后續(xù)有空再寫);
以下僅僅為一些筆記
excel簡(jiǎn)易sql查詢插件,可轉(zhuǎn):https://blog.csdn.net/me_to_007/article/details/130417173
'一、Connection對(duì)象'1 建立和數(shù)據(jù)庫(kù)的連接'.Open' Dim con As New Connection' Set con = CreateObject("ADODB.Connection") ' con.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.Path & "/Database/exceldata.xls"' 數(shù)據(jù)連接' con.Open "Provider=Microsoft.ace.Oledb.12.0;" _& "Extended Properties=Excel 12.0;" _& "Data Source=" & ThisWorkbook.FullName'Conn.Open:打開數(shù)據(jù)庫(kù)的連接'provider=microsoft.jet.oledb.4.0 數(shù)據(jù)庫(kù)引擎版本,該引擎主要用于excel2003;Provider=Microsoft.ace.Oledb.12.0;用于excel2007及以上版本'extended properties=excel 8.0 連接的是Excel8.0版本(excel2000以后的版本),Excel不是標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)格式,所以要設(shè)置擴(kuò)展屬性'data source=" & ThisWorkbook.Path & "/數(shù)據(jù)庫(kù).xls" 數(shù)據(jù)庫(kù)路徑'************以下是連接其他數(shù)據(jù)庫(kù)或文件的字符串表達(dá)式*********************************'1 Mysql數(shù)據(jù)庫(kù)'strDriver = "Provider=SQLOLEDB;DataSource=" & Path & ";Initial Catolog=" & strDataName'2 TXT文件'strDriver = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;IMEX=1;HDR=NO;FMT=Delimited;';Data Source=" & Path'3 MSSQL數(shù)據(jù)庫(kù)'strDriver = "Provider=MSDASQL;Driver={SQL Server};Server=" & Path & ";Database=" & strDataName'4 Oracle數(shù)據(jù)庫(kù)'strDriver= "Provider=madaora;Data Source=MyOracleDB; User Id=UserID; Password=Password"'2 執(zhí)行sql語(yǔ)句'.Execute SQL'增加新表格:.Execute "Create 表格名 字段和屬性"'增加新記錄:.Execute "Insert into 表名 (字段1, 字段2,... 字段n) VALUES(值1,值2,... 值n)"'刪除記錄: .Execute "Delete from 表名 where 條件'修改舊記錄:.Execute "Update 表名稱 SET 列1 = 新值,列2=新值 WHERE 列名稱 = 某值'篩選記錄: .Execute "Select 字段 from 表 where 條件'二、Recordset對(duì)象'作用 打開記錄集操作記錄'1 打開游標(biāo)(記錄集)'rst.Open sql或command語(yǔ)句等,已打開的conn鏈接,' Set rst = CreateObject("ADODB.Recordset")'2 添加新記錄'AddNew 單個(gè)字段或數(shù)組,單個(gè)值或數(shù)組'或' rst.AddNew '添加新的記錄
' rst.Fields("姓名") = "伍天明" 'Fields("字段名")表示某列的記錄
' rst.Fields("年齡") = 28
' rst.Fields("性別") = "男"
' rst.Update '添加記錄后要更新'3 修改記錄'rst.Update 字段數(shù)組, 值或數(shù)組'4 刪除記錄'rst.delete'5 在記錄中循環(huán)'BOF 在記錄的最前面'EOF 在記錄的結(jié)尾'GetRows(默認(rèn)值-1,Start, 字段)'Start 0從當(dāng)前記錄開始,1從第一條記錄,2從最后一條記錄開始
以上轉(zhuǎn)載自藍(lán)色幻想教學(xué)
一般操作步驟:
if con.State=ADODB.ObjectStateEnum.adStateOpen then "連接成功"
可用來(lái)判斷數(shù)據(jù)庫(kù)鏈接是否成功
ActiveSheet.Range("A2").CopyFromRecordset rst
可以rst.Open query_sql, con, 1, 1
把返回的數(shù)據(jù)集寫到活動(dòng)工作表里
寫入表頭
With ActiveSheetcols = rs.Fields.CountFor i = 0 To cols - 1.Cells(1, i + 1).Value = rs.Fields(i).Name ' 寫入表頭Next.Cells(2, 1).CopyFromRecordset rs ' 數(shù)據(jù)寫入
End With
用來(lái)判斷rst是否成功返回
if rst.State=ADODB.ObjectStateEnum.adStateOpen then "rst.open 成功返回"
關(guān)于數(shù)據(jù)庫(kù)引擎與連接串
' provider=microsoft.jet.oledb.4.0 數(shù)據(jù)庫(kù)引擎版本,該引擎主要用于excel2003;
' Provider=Microsoft.ace.Oledb.12.0;用于excel2007及以上版本
關(guān)閉鏈接對(duì)象和記錄集
Set con = Nothing
Set rs = Nothing
本地查詢sql樣例:
select t2.group,sum(t1.銷售額) as sales
from [Sheet1$] as t1
inner join [分組$c4:d7] as t2
on t1.姓名=t2.姓名
where date_field<#2023/4/24#
group by t2.group