iT邦幫忙

0

請問SQL應該從哪裡入門?

工作需要會分別從SAP、webdirect和前人寫好的SQL資料庫(不確定怎麼稱呼,類似excel檔的型式,也是從公司資料庫抓報表,在設定好的格式中輸入不同時間段可以抓資料,貌似使用oracle連線),撈各種不同報表,然後複製貼上到excel檔再進行分析、比對差異。

我學習SQL的目的是為了做出上述的excel檔,因為前人已經離職,沒有可以詢問的對象,就目前查詢了解到的內容SQL語法應用範圍很廣,SAP和oracle又好像是類似的企業資源管理系統,因此反而不知道應該從哪裡開始學習,請求高人指點。

ps. 若以現行手法,登入各資料庫下載報表,再手動貼上到excel檔案,並以檔案內各種函數公式分析差異,目前因資料量過大而跑很慢,用sql資料庫可能改善嗎?

Kevin iT邦新手 1 級 ‧ 2018-07-15 12:32:21 檢舉
如果是因為效率太慢,那我建議你可以找一個程式語言來撈oracle資料庫,再找程式寫入Excel相關的文章,這樣應該就能比對了。
函數部分你要寫在Excel或者你要在程式處理完再丟Excel也可以,方法很多。
1. 先學 SQL 語法
2. 了解 EXCEL 如何用 SQL 語法抓各個資料庫得資料
3. 資料量大速度慢,要改進的是硬體,跟查詢語法,硬體,要找專家評估,目前的IOPS 是多少要改善要提高到多少,需要多少費用
至於查詢語法,那個學會SQL 並且精進之後才有機會修改,很多都是經驗累積出來的,或是找專家進行修改,看你們的預算
aptx1596 iT邦新手 4 級 ‧ 2019-03-14 00:16:38 檢舉
我不想解答 你可能要查詢一下 EXCEL ODBC,然後學完SQL後,到資料庫中建立VIEW 接著連進去抓VIEW出來用。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
黃彥儒
iT邦高手 1 級 ‧ 2018-07-15 01:21:32

如果是我,我會用Python,搭配物件化的庫可以很簡單的自資料庫撈出資料而免去寫SQL的困擾
像是sqlalchemy,它也有Excel的庫可以用。

答2:sql資料庫是什麼鬼= =

謝謝你的回答,但我也不會用Python哈哈

不知道要怎麼稱呼那個XD

2

既然是問「請問SQL應該從哪裡入門?」,那就給新手幾個建議吧:
/images/emoticon/emoticon13.gif

  1. SQL不像其他語言變化那麼大(是指常用的部份),基本上只要看完一本SQL200幾書,之後再配合google找特定的問題,可以解決90%的問題,前提要有耐心看完,而且照著書本做過兩遍以上,說起來容易,做起來比想像中要困難。

  2. 如果有人問學程式最困難的地方在哪,是英文?還是數學?其實最難的是持之以恆的寫,新手最容易犯的錯,以為看懂就是懂,程式沒有寫過兩遍以上不算是真的懂,通常大多數的新手會掛在這關,所以真的不要用嘴寫程式,當然前提也還是要先看懂,然後每天不間斷的動手寫,碰到問題再想辦法解,沒有經過這樣無數次循環的人,基本就是外行人。

  3. 無論你的問題是什麼,處理資料型的問題,通常是來源 -> 分析 -> 處理的過程,所以要先確認你的資料來源有哪些? 就一個excel檔?還是有其他的部份,看你的描述似乎有點混亂了,分析的話,就是把你的資料進行正規化,相關正規化的資料,可自行google,等做到了這步,接著處理就跟SQL的語法有關了,當然正規化的好壞,會決定之後的維護和SQL的語法的寫法,所以至少要對你的資料有基本的了解,例如可以劃分成幾張表,然後用SQL的語法代替excel的資料分析,不過最終應該還是要放到excel,因為圖表分析還是需要透過excel,除非配合其他的語言,那基本上就算是個報表系統了,能獨立做到這一步,也算是個程式設計師了。

謝謝你的回答和建議,我主要是想試試看描述自己的問題(雖然很不清不楚),能不能縮小入門的學習範圍,不然有點像大海撈針XD

簡單說就是,先拿本sql的書或是上網google教學,了解基本的sql知識,然後把你目前有哪些的資料來源列出來,先試著將資料正規化,用excel整理好,然後再放進資料庫,再來就是怎麼用sql語法依需求撈出來,這些事可以同時進行,你可以一邊了解sql,一邊把你的資料當作範例去實作~

1
小魚
iT邦大師 1 級 ‧ 2018-07-15 09:43:39

基本上現在網路上都可以找到資料了,
可以參考 這個網站這個網站

第一個我也常用。

小魚 iT邦大師 1 級 ‧ 2018-07-15 16:58:54 檢舉

雖然我現在很少去看了...

第一個網站我查資料時也有看到,謝謝你的建議,看來要好好拜讀了XD

1
echochio
iT邦高手 1 級 ‧ 2018-07-16 09:21:48

我會 PYTHON , 也會 sql COMMAND 基本語法
後來發現 excel 可以直接撈 資料庫, 就用 vba 解決了 , 連 PYTHON 都不需要,
EXECL 2016 您可以試試看它的sql 連線,撈看看有沒有辦法撈到你要的資料。
然而 VBA 的巨集可以錄製動作,很多重複的動作都可錄製後修改。
如果能做到自動撈取自動進行分析、比對差異,那你的工作就輕鬆多了。
希望能幫到你。

第一次聽說Excel可以自動撈資料!
我會好好研究的,感謝你~

小魚 iT邦大師 1 級 ‧ 2018-07-16 21:09:43 檢舉

搜尋一下 Excel VBA 即可,
也可借閱相關書籍

echochio iT邦高手 1 級 ‧ 2018-07-18 00:17:52 檢舉

https://www.echochio.nctu.me/2018/06/Execl-chi/

我寫的連正航資料庫 ... 然後 ..做些有的沒的亂寫一通可工作 ....
當然要套表 ... (我沒blog 上沒留 Excel 表 ....因為公司的資訊不方便留表 ...) 只留程式當 opensource ... 會用的去改吧 !!!

0
Luke
iT邦研究生 5 級 ‧ 2018-07-16 10:41:33

【ps. 若以現行手法,登入各資料庫下載報表,再手動貼上到excel檔案,並以檔案內各種函數公式分析差異,目前因資料量過大而跑很慢,用sql資料庫可能改善嗎?】

/images/emoticon/emoticon06.gif

登入各個資料庫 ==> 那您可以,建立一台資料庫伺服機 ,DBLINK 或 程式JOB...等,將要用的資料都拋轉到,這台新的資料庫伺服機,定時或即時...都可以
寫好種函數公式分析差異,在資料庫的JOB,定時運算或及時運算 都可
以上僅供參考

SQL資料庫==> 沒有這個東西?

資料庫有 PostgreSQL、Microsoft Access、Microsoft SQL Server,Oracle、MySQL... 等

謝謝你的回答,感覺是可以很自動化的方式,不過文組渣有障礙QQ

0
做工仔人!
iT邦大師 1 級 ‧ 2018-07-16 11:27:28

1.自己先找一台電腦裝一套MS-SQL.=>原因:新安裝好的SERVER ,比較乾淨,不會有一些奇奇怪的東西在系統中.
2.用"DBLINK" 連到各種不同的資料庫-含前人開的資料庫.確定有以看到這資料庫的內容及資料.
3.用T-SQL 將各種資料庫的資料匯整到自己SERVER的資料庫中,不同的TABLE .=>取得資料.
4.利用步驟3的TABLE ,寫T-SQL 整理出USER要的資料TABLE.=>請記得驗證資料或留驗證TABLE
5.開放TABLE 權限,讓USER 可用 EXCEL 透過ODBC 方式來取得資料.並將欄位整理好.存檔.
6.請USER要看資料時就:"更新資料"即可.

之後再簡化一相關的內容:如前人的資料,自己改寫到自己的SERVER,測試OK 後.前人就可以真正的變為前人了.
其他系統的來源資料:也可以在那些系統上寫 VIEW 來加快處理速度.

當然要善用MS-SQL 的排程讓這些程式定時去跑.

好詳細的步驟>< 我會試試看的
(雖然可能還是要先學一些基礎的東西

0
WilliamHuang
iT邦研究生 1 級 ‧ 2018-07-16 17:49:17

去上揚自強老師的課
你會受益良多
那也是我的啟蒙之師
FB有個超級資料庫
/images/emoticon/emoticon41.gif

謝謝你的建議,立馬google

不明
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答