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

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

數據庫 SQL Server 數據倉庫
需求背景最近公司打算集中梳理幾大業務系統的數據,希望將各個業務系統中的數據集中到數據倉庫中。總共有5000多張數據表,但是好在業務數據量沒有像電商那么龐大,也就幾十個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數據庫開發
相關推薦

2023-11-17 18:02:19

數據倉庫性能Doris

2012-03-05 10:06:40

云計算數據倉庫數據遷移

2010-07-26 17:36:44

SQL Server數

2021-01-28 09:00:00

SQL數據庫NoSQL

2016-11-14 10:23:08

Hadoop工具大數據數據倉庫

2009-09-07 16:13:14

LINQ to SQL

2013-10-29 13:28:13

數據

2011-08-25 18:09:36

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

2021-07-09 18:26:41

PythonMySQL MongoDB

2009-08-06 09:20:30

2023-01-11 10:29:26

2009-01-18 11:11:36

InnoDBMySQLMVCC

2020-02-17 11:37:54

大數據數據倉庫技術

2016-08-15 12:57:01

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

2011-04-06 17:30:41

SQL ServerSQL

2021-09-01 10:03:44

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

2016-11-08 09:16:54

數據倉庫優化

2009-02-25 08:56:26

數據倉庫SQL Server SQL Server

2010-07-20 09:26:17

SQL Server

2009-02-24 12:14:27

微軟SQLServer20數據倉庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人小视频在线观看 | 国产精品免费观看 | 久久999| 成人国产精品久久久 | aaaaa毛片| 麻豆视频在线看 | 久久精品久久精品久久精品 | 一区二区三区四区国产 | 中国xxxx性xxxx产国 | 综合九九 | 日韩理论电影在线观看 | 亚洲三级免费看 | 男女国产网站 | 中国大陆高清aⅴ毛片 | 中国黄色在线视频 | 免费在线播放黄色 | 日韩精品久久久久久 | 午夜一区 | 亚洲国产精品久久久久 | 日本成人中文字幕在线观看 | 亚洲视频一区在线观看 | 欧美一区二区三区久久精品 | av国产精品 | 欧美日韩一区在线播放 | 精品国产精品一区二区夜夜嗨 | 四虎最新视频 | 成人高潮片免费视频欧美 | 天天操夜夜看 | 中文字幕一二三 | 国产日韩欧美一区二区 | 极品一区| 一区二区三区国产 | 久久久久久久一级 | 国产精品国产三级国产aⅴ中文 | 黄色网址av | 午夜av成人 | 日韩综合在线播放 | 精品久久久网站 | 中文字幕高清 | 国产日韩一区二区三区 | 日韩成人在线观看 |