成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

5000多張數據表,如何用SQL遷移到數據倉庫?

數據庫 SQL Server 數據倉庫
需求背景最近公司打算集中梳理幾大業務系統的數據,希望將各個業務系統中的數據集中到數據倉庫中??偣灿?000多張數據表,但是好在業務數據量沒有像電商那么龐大,也就幾十個G。

 需求背景

最近公司打算集中梳理幾大業務系統的數據,希望將各個業務系統中的數據集中到數據倉庫中。總共有5000多張數據表,但是好在業務數據量沒有像電商那么龐大,也就幾十個G。

[[355322]]

需求分析

其實這個需求很簡單,就是把這5000多張不同數據庫中的表放到一個地方。需要注意的有以下幾點:

1、數據來自各種不同類型的數據庫,有SQL Server,MySQL和Oracle

2、表的數據量較多,一個一個寫查詢代碼肯定不現實

3、后續數據倉庫的維護

方案建議

由于數據量不是很大,我打算用DBLINK來實現從不同的庫中抽取數據到數據倉庫中。

方案思路

1、創建不同的DBLINK

數據倉庫我們目前使用的是SQL Server的服務器,整體性能還可以。但是業務系統的數據庫類型不一,在新建DBLINK時有不同的要求:

a、針對SQL Server的業務數據庫可以直接在服務器上新建

 

b、針對MySQL和Oracle的業務數據庫需要先使用ODBC作用中間組件來配置。

 

2、查詢數據庫中的所有表表名

每個業務數據庫都是全庫抽取,那么首先需要找到這些數據庫中的所有表。這里我們以SQL Server為例來查找數據庫中的所有表。

 

  1. SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' 

上面的代碼就可以把當前庫中的所有表的表名都給查詢出來,我這里在家里電腦測試了一下,給大家看下截圖:

 

大家也可以在自己的電腦上試一試就知道了。

Oracle獲取用戶表表名的代碼如下:

 

  1. SELECT * FROM USER_TABLES; 

MySQL獲取用戶表表名的代碼如下:

 

  1. select table_name 
  2. from information_schema.tables 
  3. where table_schema='db_name'

3、循環抽取數據

我們在完成上面兩步后,就可以開始循環抽取各業務系統的數據了。這里我們需要寫一個游標來循環執行。具體代碼如下:

 

  1. DECLARE @TableName varchar(50),@Sql varchar(500) 
  2. --定義兩個變量,一個用來存儲表名,一個用來存儲插入語句 
  3. DECLARE cursor_variable CURSOR FOR 
  4. --定義一個游標,并且將目標表的所有表名插入游標中 
  5. select name from [192.168.0.39].[test].[dbo].sysobjects where xtype='u' order by name
  6. OPEN cursor_variable 
  7. --打開游標 
  8. FETCH NEXT FROM cursor_variable 
  9. INTO @TableName 
  10. --獲取游標中的數據插入到變量中 
  11. WHILE @@FETCH_STATUS=0 
  12. --循環執行,當游標中的數據被讀完為止 
  13. BEGIN  
  14.    SET @Sql='select * into dbo.'+@TableName +' from [192.168.0.39].[test].[dbo].'+@TableName 
  15.    Exec @Sql 
  16. FETCH NEXT FROM cursor_variable 
  17. INTO @TableName 
  18. END 
  19. CLOSE cursor_variable 
  20. --關閉游標 
  21. DEALLOCATE cursor_variable; 
  22. --釋放游標 

目前只是測試代碼,后續在性能上還可以繼續優化。

4、設置定時任務

代碼寫好了,肯定不可能每天手動去執行,這時候我們可以使用數據庫的定時任務,這個我在以前的文章中有提到過。《數據庫任務自動化其實很簡單,JOB的簡單介紹》

 

我們把代碼放到定時任務里面,讓它每天凌晨1點執行即可。

總結

這個辦法在處理數據量不多的情況下是可行的,如果數據量較大,性能上會存在較大風險。下面我們回顧一下做了哪些內容:

1、創建不同數據庫的DBLINK

2、查詢到每個數據庫的所有表名

3、使用游標循環插入到數據倉庫

4、設置定時任務執行上面的游標

每個步驟都可能會存在問題,但是只要把這些問題都解決了,這件事就解決了。

覺得不錯,記得轉發分享給更多人~

責任編輯:華軒 來源: SQL數據庫開發
相關推薦

2012-03-05 10:06:40

云計算數據倉庫數據遷移

2023-11-17 18:02:19

數據倉庫性能Doris

2010-07-26 17:36:44

SQL Server數

2021-01-28 09:00:00

SQL數據庫NoSQL

2013-10-29 13:28:13

數據

2016-11-14 10:23:08

Hadoop工具大數據數據倉庫

2009-08-06 09:20:30

2009-09-07 16:13:14

LINQ to SQL

2021-07-09 18:26:41

PythonMySQL MongoDB

2011-08-25 18:09:36

SQL Server創建數據倉庫已分區表

2020-02-17 11:37:54

大數據數據倉庫技術

2016-08-15 12:57:01

數據倉庫索引架構維度索引

2023-01-11 10:29:26

2016-11-08 09:16:54

數據倉庫優化

2011-04-06 17:30:41

SQL ServerSQL

2009-01-18 11:11:36

InnoDBMySQLMVCC

2021-09-01 10:03:44

數據倉庫云數據倉庫數據庫

2009-02-25 08:56:26

數據倉庫SQL Server SQL Server

2010-07-20 09:26:17

SQL Server

2020-04-06 13:52:45

數據倉庫大數據平臺Hadoop
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91青娱乐在线 | 亚洲在线一区二区 | 91在线观 | 特级黄一级播放 | 久草免费电影 | 久久久国产一区二区 | 日韩欧美中文字幕在线观看 | 雨宫琴音一区二区在线 | 久久久性 | 国产高清免费视频 | 91精品国产91 | av手机在线播放 | 成人免费看片网 | 中文在线а√在线8 | 免费观看毛片 | 亚洲视频在线观看免费 | 亚洲免费成人 | 欧美亚洲视频在线观看 | 亚洲精品乱码久久久久久按摩观 | 免费色网址 | 亚洲国产小视频 | 成人午夜免费在线视频 | 日韩久久综合 | 久久久久久国产精品免费免费 | 美女爽到呻吟久久久久 | 亚洲精品福利在线 | 99亚洲 | 中文字幕第十五页 | 国产jizz女人多喷水99 | 国产美女一区 | 精品国产一区二区三区性色 | 超碰av在线 | 在线观看中文字幕 | 久久亚洲一区 | 国产高清视频在线观看 | 日本久久福利 | 久久极品 | 精品视频一区二区三区在线观看 | 国产日韩免费视频 | 亚洲精品视频免费观看 | 日韩中文字幕视频在线观看 |