當前位置:首頁 » 編程語言 » sql做報表自動化
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql做報表自動化

發布時間: 2023-05-31 08:33:29

⑴ 如何自動化完成sql審核

很多游戲項目都是通過每周更新大版本來維持用戶的粘性和活躍度,而更新版本必然伴隨著資料庫的新建create、改表alter的SQL。

運維或者dba負責審核這類sql是否合理、高效,因為很多開發同事特別是經驗少的新人是不考慮sql性能、是否合乎MySQL的最佳實踐。
經常很多建表語句漏加索引或者加錯索引(不滿足最左匹配等情況),需要等到開服後資料庫負載過高引起告警才發現問題。
MySQL的配置中有一個日誌是記錄沒有使用索引的sql,記錄進slow log日誌中,不過實際使用過程中,的確存在著很多合理的不使用索引的情況,所以這個日誌一般不打開。

為了避免人工審閱的重復勞動,所以運維可以通過寫程序、腳本來自動審核sql,而審核的條件一般如下:
1、表結構是否合法 //不合法當然不能通過
2、表名、列名長度超過 16 //主要跟我們自己的授權有關系
3、必須有 unsigned //業務最容易忘記添加,當然如果一定要負值,那麼就走人工審核;
4、必須為 InnoDB //當然了,我已經忘記還有MyISAM了,統計日誌表除外
5、int bigint(10) 不能小於 10 //大家見過int(1)的情況么?
6、varchar 長度小於 3000 // 這也算是一個人為規定,沒有任何意義
7、text 欄位個數不能大於 3 //人為規定而已
8、主鍵必須為 int 類型 //不int,真的會死人
9、索引不能有重復 //見過key(id),key(id,uid)的情況嗎?
10、索引個數不能大於 5 個(包括主鍵) //人為定義而已
11、索引欄位必須為 not null,並且有 default 值 //參照高性能那本書說的,其實不一定影響性能
12、SQL 是否使用到索引 //不能用到索引的SQL,真的很慘
13、SQL 中不能有 * //由於* 經常導致流量、O巨大,所以,也強制了
14、自增欄位必須為 int 或者 bigint //見過自增用smallint的嗎?然後一下就溢出了
15、請不要使用MySQL的保留字(Reserved Words) //寫腳本,大家討厭<`>符號么?
開發提交sql後,會直接調用後端審核程序,程序根據以上規則,進行審核,就極大的降低了運維、DBA的工作量。

當sql審核通過後,是否馬上執行?
根據以下情況判斷:
1、表小於10w行,小於10M空間大小,那麼直接執行SQL;
2、如果不滿足1,並且滿足percona online-schema-change條件,那麼通過osc工具,進行在線修改;
3、如果1、2都不行,走人工上線流程;

⑵ excel vba使用sql時,提示 運行時錯誤 -2147467259(80004005) 自動化(Automation)錯誤

可能只是 Sheet1 這個表名 不存在,

要不然就是版本 問題了, 2007 可能版本有點低,你好像寫的 Excel12.0

⑶ SQL Server 自動化管理分區設計方案

一 設計說明

設計這個自動化的目的是想要交替 重復地使用固定的幾個分區(分區編號 ~ )來保存數據 當最後一個分區就是快滿的時候 我們會把最舊數據的分區的數據清空出分區 新數據就可以使用老分區空間了

應用這個自動化管理分區的環境是有些限制的 其一 分區的數據是呈現遞增的 比如分區欄位是自增Id值 或者是以日期作為分區;其二 可以接受 歷史數據被移除分區表帶來的問題 其三 一天進庫的數量不應大於分區管理表PartitionManage中Part_Value與 Change_Value的差 因為我們作業執行的頻率是 天 不過你可以調整Change_Value或者作業的執行頻率;

具體腳本可以參考 SQL Server 自動化刪除表分區設計方案

二 看圖說話

(圖 整體概念圖)

數據流經過分區方案 被分配到不同的分區中 從圖中可以看出 分區是可以重復利用的 後台有一個所謂的自動化切換分區的作業在跑 目的就是如果 重復利用這些分區 這里的PRIMARY目的就是說明它與其它文件組的一個平級關系 而且我們在做交換分區時候也會用到PRIMARY 需要事先分配足夠 的空間

(圖 自動化設計圖)

這是自動化切換分區作業的邏輯處理 其中分區管理表的設計是比較重要的 它的靈活度關繫到整個自動化的效果; 這個邏輯有以下幾個特點

分區的索引進行存儲位置對齊;其它索引在創建時就陵孫咐使用了分區方案 索引數據跟隨分區數據一起存儲在分區中;

分區管理表 包含了分區記錄數預警設計 在Id達到這個值後凱櫻就會進行交換分區;

分區管理表 FileGroup_String欄位的數據可以通過SQL腳本自動化生成 條件就是分區文件組名稱需要有規律;

臨時表是創建在PRIMARY主分區上 跟原表使用相同的分區方案;需要事先給PRIMARY分配大於或者等於一個分區文件大小的空間 這樣在交換分區的時候就不用增量為主分區分配數據空間;

交換舊數據到臨時表 使用下面的語句可以把數據交換到相同的分區中編號 這樣可以應對臨時表就是一個歷史表 而好處就是歷史表也同樣使用了分區

ALTER TABLE [tb] SWITCH PARTITION @PARTITION_num TO [Temp_tb] PARTITION@PARTITION_num

這里需要先修改分區方案 才能修改分區函數 這個跟創建分區函數與分區方案的順序是剛好相反的

(圖 分區管理表PartitionManage)

欄位說明 Change_Value(預警Id值)Part_Value(分區函數值)FileGroup_String(分區文件組名稱)IsDone(狀態)UpdateTime(更新時間);

這就是那個分區管理表(PartitionManage) 它是經過了幾個版本後才把欄位確定下來的 現在它已經比較完善了 能應對比較多的情況

比如我們可以修改預警值(Change_Value) 讓數據提早進入交換分區;

比如我們可以修改分區值(Part_Value) 達到調整分區間隔的目的;

比如我們可以修改分區文件組名稱(FileGroup_String) 達到跳級文件組的目的;通過修改分區管理表來設置分區值與分區文件組的對應關系;

再比如 我們一次性修改了分區方案和分區函數 已經去到很後面的分區值了 那麼我們只要設置這些分區值的狀態(IsDone)為 (True)就可以解決了

記錄了進行交換分區的時間(UpdateTime) 方便查詢;

(圖 分區為Id欄位的記錄分布圖)

這是一個實戰中的分區情況 這樣的分區特點就是分區裡面的記錄數基本上是持平的 在Partition_num= 的記錄中明顯多了很多記錄 這就是因為我們沒有及時進行交換分區造成的

(圖 分尺純區為ClassId(分類)欄位的記錄分布圖)

lishixin/Article/program/SQLServer/201311/22352

⑷ 如何在SQL中建立一個自動化任務

  • 自動化任務直接可以在SQL中創建job

  • job有時間執行周期

  • 所以可以設置執行起始時間,可以按天,按周,等等

  • 假如按小時,那就選擇按天,設置多少小時執行一次

⑸ 如何自動化完成SQL審核

sql審核主要完成兩方面的目的.
1、避免性能太差的sql進入生產系統,導致整體性能降低
2、檢查開發設計的索引是否合理,是否需要添加索引

第一點是SQL審核最核心的地方,避免亂七八糟的sql影響線上性能,甚至導致線上系統崩潰.
第二點是屬於建模的范疇,要解決建模的最好辦法是DBA參與項目前期審核,由DBA建模,如果DBA人力資源不足,那麼就定期由DBA對開發人員進行培訓.然後發現建模太爛的就扣KPI.

現在很多公司都是人肉來完成SQL審核的,人肉審核對dba的要求較高,需要懂一些代碼,另外是費時費力,畢竟一般公司幾十個開發,對應一個DBA,而且DBA還要干很多其他的事情.
如何將DBA從人肉SQL審核中解放出來呢?

思路其實很簡單:
1、獲取程序要執行的SQL
2、對要執行的SQL做分析,可以加各種分析條件來判斷這個SQL是否可以自動審核通過,未通過審核的需要人工處理.
3、配合後期的慢查詢日誌分析系統完成長期的監控.

開源的解決方案主要有淘寶丹臣sqlautoreview系統.可以在github上搜索到.
但是這個系統主要是基於java sqlmapfile.xml解決自動創建索引的問題,對源數據有要求,並且是通過解析SQL結構來假設SQL的執行計劃,不是特別准確,並且不能夠很好的區分新sql還是老sql.

所以產生了一個新的方案:
1、為所有的執行過的sql產生一個figerprint
2、基於慢查詢提供的數據,加上explain 提供的數據來判斷這個sql的性能是否可接受,或者可優化.
3、自動審核通過性能可接受的部分,給DBA展示性能較差的sql,然後進行優化.

方案的優點在於:
基於用戶真正執行的SQL,並且可以觀察SQL執行頻率.
基於MySQL真正的執行計劃和執行結果,分析更准確.
每個SQL都有一個fingerprint,只需要增量處理新加的SQL,效率和性能提高.
基於Box anemometer二次開發,讓慢查詢和sql審核同平台,增加工具集成性,提高用戶體驗(DBA和開發人員)。

方案實施:
既然咱是DBA,肯定會有更DBA的思維方式.基於現有軟體二次開發完成,減少開發成本,整合管理平台.
基於Box anemometer.安裝Box anemometer
Box anemometer是一款B/S架構,圖形化的MySQL慢查詢分析工具.功能強大易用,設計簡單直接.anemometer是基於pt-query-digest的二次封裝得來.

核心處理流程:
mysql node–>計劃任務通過pt-query-digest收集慢查詢信息–>結果寫入到資料庫中–>anemometer按條件去展示慢查詢的結果,並且提供了圖形化和趨勢分布圖等功能.
所以anemometer已經幫我們完成了數據收集,包括每個sql的fingerprint信息,以及相關的信息,我們在測試環境,基於anemometer,將long_query_time設置為0,就可以收集到所以的SQL及相關信息.

在我們收集到所有SQL以後,我們就要來分析這個SQL是否可以自動審核通過.這里開始我們就要定製了.

定製內容如下:
一、
設置一個單獨的datasources,可以命名為audit_sql.
這個datasources裡面只放置開發環境或者測試環境的慢查詢(你要做sql審核基於哪個環境),將此環境的long_query_time設置為0,接收所有的sql查詢.

二、修改anemometer
ALTER TABLE `global_query_review` ADD audit_status VARCHAR(255) NOT
NULL DEFAULT 『refuse』 comment 『sql審計的狀態 refuse未通過 pass審核通過』;

修改PHP代碼.
在report模塊的where條件中增加一個Ait Status的選項框,可以過濾audit_status的狀態
在show_query模塊中增加一個Audit Status的選項框,可以人工設置audit_status的狀態

三、增加兩個額外的腳本,准實時的分析audit_status為refuse的sql,如果sql的滿足自動審核通過的條件,那麼就設置audit_status為pass,表示自動審核通過.
自動審核未通過的sql,由DBA人工在anemometer上檢索和處理.
這里就涉及到一個自動審核通過的演算法:
演算法分兩種.
第一種是准實時,也就是可以幾分鍾或者一個小時運行一次,主要是根據每個sql的執行效率判斷是否pass.
對應的腳本名字叫做:audit_sql.py

第二種是一天一次,弱化執行效率判斷,增加一天執行的頻率判斷.
對應的腳本名字叫做:audit_sql_day.py

各家根據自己的實際情況調整或者優化這兩個腳本.
至此,你已經可以讓99%以上的代碼自動審核通過了,審核不通過的代碼你可以讓開發自己來tracking也可以主動推給開發.
對於才搭建的環境,可能會有一些亂七八糟的sql,不過使用一段時間穩定以後,異常的sql指紋都有了,那麼每天產生的sql指紋就比較少了,而這部分SQL指紋也就是程序員編寫新的代碼產生的.

⑹ 如何實現一鍵全自動化統計

1、【數據】-【獲取數據】-【來自資料庫】,也可以來自本地文件或其他方式,這里以mysql數據源為例講解。
2、連接資料庫,填寫SQL語句,點擊「確定」。數據查詢完後彈出查詢結果,點擊下方【扮游載入】-【載入到】選擇數據放置位置。
3、數據的放置位置可以選現有工作表(選擇斗指一個單元格)或新工作表,點擊確定即可載入到表中。
4、數據源更新完成後,下面製作報表,主要是利用函數公式來完成(此數據源為分部門、分日的業績數據,一般報表中需統計當前業績、同環比等數據,可根據具體需要設置表頭)。
5、報表表頭設計,並使用日期公式添加輔助統計條件。
6、統計周期起止日期確定後,下一步計算對應周期內的業績,常用的為sumifs函數,注意使用固定符號$,方便下拉、右拉直接計算出對應結果。
7、匯總公式填寫完後,自動報表即製作完成。之後每天刷新數據即可自動獲取資料庫最新數據,報表也會根據最新的統廳銷銷計時間周期計算相應的完成。

⑺ 有效使用SQL Server的自動管理功能

如要讓資料庫進行自動管理 則管理員需要預先定義一些可預測的管理任務以及這些任務發送的條件 當滿足這些指定的條件 則資料庫會自動運行管理員指定的操作 使用自動管理來處理日常事務 則讓管理員可以抽出時間去關注其他的事情 如資料庫優化等等更加具有價值的作業

計劃就是自動化管理組件的一個成員 計劃指定了作業運行的時間 多個作業可以根據一個計兆高劃運行;多個計劃也可以應用到一個作業 但是這個時間跟我們普通上的幾點幾分又有差異 這個時間不僅指特定的日期或者時間 而且還可以表示特定的時間 如當SQL Server代理啟動的時候或者伺服器的CPU使用率處於定義的空閑狀態水平時 也就是說 這里指的時間計劃也可以實現一定的條件狀態控制 簡而言之 計劃作業就是定義使得作業在沒有哦能夠互交互情況下開始運行的條件 包括具體的日期或者特定的在狀況 通過為作業創建新計劃或者將現有的計劃添加到作業可以將作業計劃設置為自動運行 不過在設置自動執行計劃的時候 需要注意一個問題 即一次只能夠運行一個作業實例 如果在作業按計劃運行時嘗試手工運行該作業 則SQL Server代理將拒絕這個請求 另外 即使計劃未啟用 作業仍可以為響應警報而運行 或者由用戶手動運行 如果作業計劃未啟用 則任何使用該計劃的作業都不會啟用該計劃

一 計劃觸發的時間與事件

上面筆者說過 計劃可以基於特定的時間與事件而觸發 那麼這些具體的時間與事件是什麼呢?筆者平時用到的最多的就是如下幾種情況

一是特定的日期和時間運行一次 這個計劃時間在資料庫備份的時候特別有用 大家都知道 資料庫備份會佔用比較多的系統資源 如果在資料庫伺服器使用高峰期(如白天上班時間)進行備份的話 那麼會對用戶的訪問造成比較大的影響 為此筆者就把資料庫備份的時間放在晚上 點之後 這個時段相對來說 很少有用戶會訪問資料庫 此時管理員就可以利用計劃功能 讓其在每天的 點之後進行資料庫備份 這就是基於特定的日期和時間計劃的典型應用

二是安族毀尺重復執行的計劃運行 這個跟上面講的特定日期和時間運行一次比較類似 只是上面的情況只運行一次 而這個按重復執行計劃運行則是指會重復運行多次 如每天晚上 點都進行資料庫備份等等 在實際工作中 特定日期和時間運新一次往往只是針對一些特殊的情況 如今天剛對資料庫結構進行了比較大的更改 如添加了幾張表或者視圖 此時就需要對資料庫進行一次完全備份 如故不急於進行備份的話 則就可以建立一個在特定的日期和時間運行的資料庫完全備份計劃 讓其在午後進行資料庫備份 但是對於常規的資料庫備份 則需要採取這個按重復執行計劃運行

三是當計算機的CPU使用率處於定義的空閑狀態水平時 也就是說 資料庫伺服器當前的CPU使用率比較低 可以執行其他一些比較復雜的管理任務 如有些資料庫系統在設計的時候 有一個庫存補貨點作業 當庫存低於安全庫存的時候 系統就會自動生成一張物料請購單 來滿足安全庫存的需要 由於這張表設計到的物料比較多 會佔用比較多的系統資源 故可以設置每天運行一次 而運行的時間就定在CPU使用率比較低的時候 如此就可以減少對其他作業造成的負面影響

二 CPU空閑計劃的典型應用

其他的幾種計劃類型 不少資料庫管理員已經非常了解 筆者今天想談的是CPU空閑計劃的應用 這個計余鄭劃如果應用的好的話 可以大大提高資料庫的性能 如果要想利用好這個功能 則需要回答如下兩個問題

一是什麼作業需要使用CPU空閑計劃?這個問題比較難回答 從理論上來說 任何作業都可以採用CPU空閑計劃在自動執行 只是他們帶來的效果不同 有的作業即使採用了CPU空閑計劃 也不能夠帶來很大的性能改善 簡單的來說 一些佔用CPU資源比較大的作業 採用CPU空間計劃規則來自動執行 可以取得比較好的效果 如資料庫有時候需要重新生成索引 這項工作會佔用比較多的CPU資源 而且隨著數據量的增多 這個CPU使用率也會越來越高 為此 如果可以把重新生成索引的作業 放在CPU空閑時間來進行的話 那麼對於提高資料庫的性能效果是比較明顯的 總之當某個作業比較復雜 可能需要佔用到比較多的CPU或者內存資源的話 則可以採用這個CPU空閑計劃

二是什麼時候CPU是空閑的?空閑是一個相對的標准 有時會CPU使用率 %以下可以定義為空閑;而有時候CPU使用率只有不到 % 就是空閑 這要根據伺服器的配置已經所部屬的應用來考慮 所以管理員在採用CPU空閑計劃之前 先要對伺服器進行觀測一定時間 採用性能監視器等工具來監視伺服器流量並收集相關的統計信息 然後利用收集到的信息來分析CPU空閑的標准 並在資料庫中進行相關的設置 將 CPU 空閑條件定義為一個百分比 在該百分比以下 CPU 使用率必須持續指定的時間 然後 設置持續時間長度 如果 CPU 使用率在指定時間內低於指定的百分比 則 SQL Server 代理將啟動具有 CPU 空閑時間計劃的所有作業 如管理員認為CPU使用率在 %以下可以運行重建索引的作業 即當這個重建索引作業運行時CPU使用率在可以忍受的范圍之內 此時就可以把CPU的空閑率標准設置為 % 而且這個低於 %的CPU使用率必須要持續一段時間 如這個低於 %的CPU持續時間很短 那麼系統仍然不會認為這個CPU是出於空閑狀態 這個持續時間最好能夠參考具體作業的執行時間 若重建索引作業所需要的時間等等

三 如何停止計劃的自動執行?

有些時間我們可能並不需要自動執行計劃 如在資料庫設計的時候 管理員並不需要這些自動執行的計劃 為此需要把他們暫時停止 此時有哪些方法可以做到這一點呢?

一是可以把計劃與作業剝離 計劃與作業是兩個獨立的內容 如資料庫完全備份與計劃時間就是相互獨立的 如果設置好了資料庫完全備份的策略 但是沒有把計劃時間與這個作業進行關聯的話 則資料庫完全備份不會自動執行 此時如果需要執行這個作業的話 則就要進行手工啟動 故當管理員暫時不想要某個計劃的時候 可以把計劃作業剝離 即在作業中去掉這個時間計劃即可

二是禁用作業或者計劃 當管理員不需要某個作業自動運行的時候 可以把這個計劃或者作業進用掉 禁用計劃或者禁用作業都會讓某個作業停止自動運行 但是他們仍然有微小的差異 如禁止計劃的話 只是這個這個作業停止自動運行 但是管理員仍然可以手工執行它 可是禁用作業的話 則系統不僅不會自動運行 而且管理員還不能夠手工執行它 這就好像給這個作業設置了終身監禁 為此 為了避免這種情況的發生 筆者是建議最好採用禁用計劃而不是禁用作業 如此的話 在必要的時候管理員還可以手工啟動該作業來應急 另外 如果這個計劃將來仍然需要採用的話 筆者不建議把計劃與作業剝離的方式來停止計劃的自動執行;而是建議這種禁用計劃的方式來完成 不然的話 下次需要的時候仍然需要把計劃與作業關聯 反而會增加工作量

另外 如果這個測試計劃以後再也不用時 有兩種處理方法 一是把計劃直接刪除 這個是最徹底的方法 但是不會留下任何歷史紀錄 二是先把計劃跟作業玻璃 然後再禁用這個計劃 這雖然比較麻煩一點 而且會在資料庫中留下垃圾數據 但是卻可以保留歷史紀錄 這可能會對資料庫的後續維護帶來一定的幫助 到底不用的計劃是刪除還是禁用 沒有一個統一的標准 還是需要根據資料庫管理員的操作習慣來判斷

lishixin/Article/program/SQLServer/201311/22479

⑻ 如何使用SSDT進行SQL資料庫的自動化部署到生產環境和版本控制

嗯問題解決資料庫先附加2014資料庫給創建腳本腳本放低版本資料庫進行創建行想單純降低能微軟具兼容性所能高兼低低兼高太實現

⑼ 自動生成報表軟體怎樣快速生成報表

思邁特軟體Smartbi簡單、高效、智能,可快速搭建的企業級Web報表。從報表開發的數據准備、樣式設計、數據計算、數據可視化到互動邏輯、共享發布。它滿足各種格式的行業監管報表、內部管理報表的需求。

包括:清單報表、交叉報表、分組報表、多源分片報表、分塊報表、表單報表、圖形報表、回寫報表、假設分析報表、二次計算報表、套打報表、段落式報表、預警報表(Excel條件格式)、組合報表(智能評語)。Excel也能設計回寫類報表。

任何有報表開發、展現需要的機構與人員;任何行業的IT人員、業務人員、高層管理人員或從事數據分析工作的人員,都將從Smartbi Insight 中獲益。

IT部門:IT用戶在平台上輕松完成多業務系統或者文件數據對接和整合、數據語義模型構建、可視化自助ETL處理、復雜報表/可視化報告生成等多項工作。同時可使用同一的可視化運維界面來監控用戶的運行狀況,通過銀行級的多級許可權管理來實現集團許可權管控,讓IT運維省心、安心。

業務人員: 可隨時使用思邁特軟體Smartbi進行自助式即席查詢和多維度分析。再不用提需求給IT 後進入到漫長的流程等待,自己掌控業務開展,實現「數據不求人」。

高層管理者:彌合數據與決策制定之間的差距,通過可視化界面實時查看業務關鍵指標,為決策分析提供輔助支撐。使數據實時回歸到業務部門,縮短數據從基層部門到管理層匯總周期,提高管理層決策的時效性和准確性。

任何從事數據分析工作的人員: 無論是專業數據分析的研究人員,還是希望從Smartbi中學習數據分析的方法的學生和利用Smartbi進行個人工作的分析匯報的人員,都可以使用Smartbi Insight滿足其想法。


思邁特軟體Smartbi平台通用化、標准化、易於使用、專業,可幫助企業獲取更深入的數據見解,連接到數據並對數據進行可視化。經過多年持續自主研發,凝聚大量商業智能最佳實踐經驗,整合了各行業的數據分析和決策支持的功能需求。滿足最終用戶在企業級報表、數據可視化分析、自助探索分析、數據挖掘建模、AI智能分析等大數據分析需求。

思邁特軟體Smartbi個人用戶全功能模塊長期免費試用
馬上免費體驗:Smartbi一站式大數據分析平台

⑽ excel如何使用sql幫助運算一些復雜的多條件求和,然後將需要的結果返回到excel。

發來,幫你處理。。。。
扣刪除三刪除五刪除八刪除一刪除零刪除六刪除七刪除三刪除六