110頁大數(shù)據(jù)ETL技術方案_第1頁
110頁大數(shù)據(jù)ETL技術方案_第2頁
110頁大數(shù)據(jù)ETL技術方案_第3頁
110頁大數(shù)據(jù)ETL技術方案_第4頁
110頁大數(shù)據(jù)ETL技術方案_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 PAGE i大數(shù)據(jù)ETL技術方案 PAGE iii目 錄 TOC o 1-3 h z u HYPERLINK l _Toc484844782 1 ETL介紹 PAGEREF _Toc484844782 h 1 HYPERLINK l _Toc484844783 2 ETL工具介紹 PAGEREF _Toc484844783 h 2 HYPERLINK l _Toc484844784 2.1 Kettle PAGEREF _Toc484844784 h 2 HYPERLINK l _Toc484844785 2.1.1 Kettle介紹 PAGEREF _Toc484844785 h 2 HY

2、PERLINK l _Toc484844786 2.1.2 Kettle連接各種數(shù)據(jù)源 PAGEREF _Toc484844786 h 4 HYPERLINK l _Toc484844787 2.2 Sqoop工具使用(不需要安裝orc客戶端) PAGEREF _Toc484844787 h 21 HYPERLINK l _Toc484844788 2.2.1 簡介 PAGEREF _Toc484844788 h 21 HYPERLINK l _Toc484844789 2.2.2 Oracle導入到Hadoop PAGEREF _Toc484844789 h 22 HYPERLINK l _

3、Toc484844790 2.3 OratoMPP工具使用(Oracle數(shù)據(jù)庫到文件) PAGEREF _Toc484844790 h 23 HYPERLINK l _Toc484844791 2.3.1 簡介 PAGEREF _Toc484844791 h 23 HYPERLINK l _Toc484844792 2.3.2 Oracle客戶端安裝 PAGEREF _Toc484844792 h 24 HYPERLINK l _Toc484844793 2.3.3 OratoMPP使用 PAGEREF _Toc484844793 h 37 HYPERLINK l _Toc484844794

4、2.4 數(shù)據(jù)庫自帶工具抽取數(shù)據(jù)(數(shù)據(jù)庫到文件) PAGEREF _Toc484844794 h 39 HYPERLINK l _Toc484844795 2.4.1 SQL SERVER 使用Microsoft SQL Server Management Studio工具 PAGEREF _Toc484844795 h 39 HYPERLINK l _Toc484844796 2.4.2 Mysql 數(shù)據(jù)導出 PAGEREF _Toc484844796 h 45 HYPERLINK l _Toc484844797 2.4.3 PostgreSQL 數(shù)據(jù)導出 PAGEREF _Toc484844

5、797 h 45 HYPERLINK l _Toc484844798 2.5 數(shù)據(jù)加載(文件到數(shù)據(jù)庫) PAGEREF _Toc484844798 h 46 HYPERLINK l _Toc484844799 2.5.1 MPP數(shù)據(jù)加載 PAGEREF _Toc484844799 h 46 PAGE iii HYPERLINK l _Toc484844800 2.5.2 HDFS 數(shù)據(jù)加載 PAGEREF _Toc484844800 h 47 HYPERLINK l _Toc484844801 2.5.3 Hive 數(shù)據(jù)加載 PAGEREF _Toc484844801 h 47 HYPERLI

6、NK l _Toc484844802 3 場景 PAGEREF _Toc484844802 h 48 HYPERLINK l _Toc484844803 3.1 結構化全量數(shù)據(jù)導入到MPP中 PAGEREF _Toc484844803 h 48 HYPERLINK l _Toc484844804 3.1.1 Kettle表到表導入 PAGEREF _Toc484844804 h 49 HYPERLINK l _Toc484844805 3.1.2 Kettle表到文本再到表導入 PAGEREF _Toc484844805 h 52 HYPERLINK l _Toc484844806 3.1.3

7、 Kettle表到文本再使用dispath導入 PAGEREF _Toc484844806 h 58 HYPERLINK l _Toc484844807 3.1.4 MPP工具OratoMPP和dispath導入 PAGEREF _Toc484844807 h 62 HYPERLINK l _Toc484844808 3.2 結構化增量數(shù)據(jù)導入到MPP中 PAGEREF _Toc484844808 h 64 HYPERLINK l _Toc484844809 3.2.1 增量數(shù)據(jù)導入 PAGEREF _Toc484844809 h 65 HYPERLINK l _Toc484844810 3.

8、2.2 Updata(修改)數(shù)據(jù)導入 PAGEREF _Toc484844810 h 69 HYPERLINK l _Toc484844811 3.2.3 文本數(shù)據(jù)自動更新導入 PAGEREF _Toc484844811 h 70 HYPERLINK l _Toc484844812 3.3 ETL數(shù)據(jù)到Hadoop PAGEREF _Toc484844812 h 72 HYPERLINK l _Toc484844813 3.3.1 結構化數(shù)據(jù)導入 PAGEREF _Toc484844813 h 72 HYPERLINK l _Toc484844814 3.3.2 非結構化數(shù)據(jù)導入 PAGERE

9、F _Toc484844814 h 88 HYPERLINK l _Toc484844815 3.3.3 增量數(shù)據(jù)導入 PAGEREF _Toc484844815 h 88 HYPERLINK l _Toc484844816 4 FAQ PAGEREF _Toc484844816 h 89 HYPERLINK l _Toc484844817 4.1 MPP工具獲取方法 PAGEREF _Toc484844817 h 89 HYPERLINK l _Toc484844818 4.2 如何獲取SQL建表語句 PAGEREF _Toc484844818 h 90 PAGE iv HYPERLINK

10、l _Toc484844819 4.3 kettle 遇到錯誤就會中斷的解決方法 PAGEREF _Toc484844819 h 91 HYPERLINK l _Toc484844820 4.4 SQL Server 數(shù)據(jù)導出UTF-8出錯 PAGEREF _Toc484844820 h 93 HYPERLINK l _Toc484844821 4.5 換行符問題 PAGEREF _Toc484844821 h 94 HYPERLINK l _Toc484844822 4.6 MPP數(shù)據(jù)類型 PAGEREF _Toc484844822 h 94 HYPERLINK l _Toc48484482

11、3 4.6.1 數(shù)值類型 PAGEREF _Toc484844823 h 94 HYPERLINK l _Toc484844824 4.6.2 字符類型 PAGEREF _Toc484844824 h 97 HYPERLINK l _Toc484844825 4.6.3 二進制數(shù)據(jù)類型 PAGEREF _Toc484844825 h 99 HYPERLINK l _Toc484844826 4.6.4 日期和時間類型 PAGEREF _Toc484844826 h 99 PAGE 1ETL介紹ETL 方法可分為兩大類方法一:優(yōu)點:一:數(shù)據(jù)不落地,直接從源導入到目標,使用JDBC連接只要有JDB

12、C驅(qū)動即可,連接方式較為簡單二:建立ETL規(guī)則針對每一條數(shù)據(jù),做數(shù)據(jù)驗證清理三:在有增量抽取的前提下(數(shù)據(jù)有時間戳可判斷哪些是增量),可通過建立規(guī)則達到增量抽取,并且易于定時處理缺點: 一:大規(guī)模抽取速度遠不如原生抽取工具,簡單舉例子可能ETL每秒可能只能出去10M到30M,而方法二可抽取100M以上的數(shù)據(jù),相差10倍以上方法二:優(yōu)點:一:抽取性能以及加載性能由于使用原生態(tài)工具,直接使用底層C API接口,遠快于JDBC等ETL工具的速度,適合首次大數(shù)據(jù)量遷移 PAGE 3二:開發(fā)能力強可適當通過程序手段控制抽取和加載工具,可實現(xiàn)數(shù)據(jù)的高速抽取加載以及增量抽取和數(shù)據(jù)清理 缺點: 一:數(shù)據(jù)要落地

13、為文本文檔,增加一點數(shù)據(jù)遷移時間,所以上面只出最好是大數(shù)據(jù)量首次加載 二:對常用數(shù)據(jù)庫的數(shù)據(jù)遷移工具要有一定的了解,如Oracle數(shù)據(jù)庫需要安裝客戶端才可以使用高速的導出工具,對沒有安裝過的人有一定的難度ETL工具介紹Kettle Kettle介紹什么是SpoonKettle是”Kettle E.T.T.L. Envirnonment”只取首字母的縮寫。這意味著它被設計用來幫助你實現(xiàn)你的ETTL需要:抽取、轉(zhuǎn)換、裝入和加載數(shù)據(jù)。Spoon是一個圖形用戶界面,它允許你運行轉(zhuǎn)換或者任務,其中轉(zhuǎn)換是用Pan工具來運行,任務是用Kitchen來運行。Pan是一個數(shù)據(jù)轉(zhuǎn)換引擎,它可以執(zhí)行很多功能,例如:

14、從不同的數(shù)據(jù)源讀取、操作和寫入數(shù)據(jù)。Kitchen是一個可以運行利用XML或數(shù)據(jù)資源庫描述的任務。通常任務是在規(guī)定的時間間隔內(nèi)用批處理的模式自動運行。 PAGE 3安裝 目前大數(shù)據(jù)軟件DataEngine-V100R001B01D006SP2最新版本已經(jīng)集成了Kettle工具,部署DataEngine 平臺時候可以選擇Kettle組件,自動完成安裝。如果要運行在其它主機上,軟件版本可以從公司FTP上下載。注意:如果運行在其它主機上,必須安裝Sun公司的JAVA運行環(huán)境1.4或者更高版本,相關資源你可以從 HYPERLINK o JDK下載 上下載。運行SpoonDataEngine平臺:通過x

15、shell后臺直接運行Kettle就可以啟動。運行在非DataEngine平臺:下面是在不同的平臺上運行Spoon所支持的腳本:Spoon.bat: 在windows平臺運行Spoon。Spoon.sh: 在Linux、Apple OSX、Solaris平臺運行Spoon。資源庫一個Kettle資源庫可以包含那些轉(zhuǎn)換信息,這意味著為了從數(shù)據(jù)庫資源中加載一個轉(zhuǎn)換,你必須連接相應的資源庫。要實現(xiàn)這些,你需要在資源庫中定義一個數(shù)據(jù)庫連接,你可以在Spoon啟動的時候,利用資源庫對話框來定義。 PAGE 4Kettle連接各種數(shù)據(jù)源通用連接方法第一步在打開的 kettle 窗口界面中,找到左側(cè)的主對象

16、樹,右鍵“轉(zhuǎn)換”,新建一個轉(zhuǎn)換。圖 SEQ 圖 * ARABIC 4、新建轉(zhuǎn)換第二步依然在左側(cè)的主對象樹中找到 DB連接,右鍵新建一個DB連接(如果不熟悉可以使用新建數(shù)據(jù)連接向?qū)В?PAGE 5圖 SEQ 圖 * ARABIC 5、新建數(shù)據(jù)庫連接然后在彈出的窗口中按照向?qū)崾疽徊揭徊絼?chuàng)建一個 Oracle數(shù)據(jù)庫連接。 PAGE 6圖 SEQ 圖 * ARABIC 6、成功創(chuàng)建Oracle數(shù)據(jù)庫連接另外還需要注意的是,這樣簡單創(chuàng)建的數(shù)據(jù)庫連接的字符集是默認的,可能會出現(xiàn)亂碼的現(xiàn)象,為了避免亂碼現(xiàn)象出現(xiàn),可以為 JDBC 連接配置字符集參數(shù)。 PAGE 7 PAGE 8Kettle 連接Orac

17、le數(shù)據(jù)源 PAGE 9Kettle 連接MS SQL server SQL Server的數(shù)據(jù)庫名稱和示例名稱需要和客戶確認,有可能不需要示例名稱。 PAGE 10 PAGE 11Kettle 連接MPP現(xiàn)在版本已經(jīng)集成了MPP的驅(qū)動包(mpp-connector-java-1-build-53.2-bin),連接方式直接選擇MPP的連接即可,并且要提高加載速度需要配置MPP的批量加載功能,在選項中加入?yún)?shù)rewriteBatchedStatements值是true即可。 PAGE 12 PAGE 13Kettle 連接MySql PAGE 14Kettle 連接postgre,greemp

18、lum,hawq PAGE 15Kettle 連接HBase,Hadoop(非DataEngine部署的kettle)1. 登錄 DataEngine Manager ,通過其配置下載功能下載以下文件:core-site.xmlhdfs-site.xmlyarn-site.xml將下載到的三個文件放置到data-integrationpluginspentaho-big-data-pluginhadoop-configurationshdp22 目錄下,若已存在則覆蓋。并在該目錄中找到 perties 文件,打開后,根據(jù)當前 DataEngine Hadoop的版本及其他信息更改該文件的內(nèi)容。

19、 PAGE 16圖 SEQ 圖 * ARABIC 16、更改perties文件內(nèi)容由于 xml 文件中描述的 Hadoop 集群節(jié)點都是使用了主機名,所以需要將集群中的主機映射關系在本地也映射一遍。打開系統(tǒng) hosts 文件C:WindowsSystem32driversetchosts,將集群中的 IP 與主機映射關系寫入。圖 SEQ 圖 * ARABIC 17、插入主機映射關系 PAGE 17重啟 Spoon ,然后再頂部菜單欄點擊“工具Hadoop Distribution.”,然后在彈出的窗口中選擇“DataEngine Hadoop 2.3.x”。圖 SEQ 圖 * ARABIC 1

20、8、選擇Hadoop套件版本2.在 Spoon 左側(cè)主對象樹中找到 Hadoop Cluster ,右鍵新建。在彈出的窗口中正確的填入 Hadoop 集群信息,然后點擊“測試”按鈕。 PAGE 18圖 SEQ 圖 * ARABIC 19、新建Hadoop集群訪問對象點擊測試后,將彈出測試結果,本場景僅需如下圖的測試結果即可執(zhí)行: PAGE 19圖 SEQ 圖 * ARABIC 20、Hadoop集群連接創(chuàng)建測試結果 PAGE 20Kettle 連接HBase,Hadoop(DataEngine部署的kettle)直接打開kettle,在主對象樹的轉(zhuǎn)換下面有hadoop clusters的一個集

21、群默認配置打開測試連接可以直接測試成功,所以hbase和hadoop的連接可以直接使用這個default即可。 PAGE 21Sqoop工具使用(不需要安裝orc客戶端)簡介在使用Sqoop之前需要把相應的數(shù)據(jù)庫的JDBC驅(qū)動放入/usr/hdp/-3485/sqoop/lib/并且由于權限問題,建議使用hdfs 用戶執(zhí)行sqoop 相關命令注意:hdp 版本號可能根據(jù)版本的升級而變化 PAGE 22Oracle導入到HadoopOracle導入到HDFSsqoop import -connect jdbc:oracle:thin:1521:orcl -username hr -passwor

22、d hr -table JOBS -target-dir /tmp/aa -fields-terminated-by : -m 3Su - hdfs (沒有密碼)sqoop import -connect jdbc:oracle:thin:2:1521:orcl -username pqf -password 12345678 -table JN1 -target-dir /tmp/aa -fields-terminated-by : -m 3:1521 oracle數(shù)據(jù)IP和端口 orcl:數(shù)據(jù)庫實例-table:表名-username:數(shù)據(jù)庫用戶名-password:數(shù)據(jù)庫密碼-m 為Ha

23、doop集群數(shù)量(并行度) -fileds-terminated-by 數(shù)據(jù)文件分隔符-target-dir 會在tmp目錄下創(chuàng)建一個aa 目錄,放置導出的數(shù)據(jù)文件Oracle導入Hbase直接創(chuàng)建HBase表 PAGE 23sqoop import -connect jdbc:oracle:thin:1521:orcl -username hr -password hr -table JOBS -hbase-create-table -hbase-table jobs -column-family info1 -hbase-row-key JOB_ID -m 3-hbase-create-t

24、able:若hbase中不存在需要導入的表,則需要加添加該參數(shù)進行創(chuàng)建。-hbase-table:hbase的表名-column-family:列簇名-hbase-row-key:指定原表中的一列為key值Oracle導入到Hivesqoop import -connect jdbc:oracle:thin:1521:orcl -username hr -password hr -table JOBS -hive-table jobs -hive-import -fields-terminated-by | -m 3OratoMPP工具使用(Oracle數(shù)據(jù)庫到文件)簡介OratoMPP是一個

25、可以快速、高效地從oracle數(shù)據(jù)庫系統(tǒng)中抽取數(shù)據(jù),并將數(shù)據(jù)保存到指定文件中的專用工具。并且OratoMPP還提供查詢語句導出和全表導出兩種方式,其中全表導出的登錄用戶需要對dba_extents、dba_objects和dba_tables這三張表有select權限。OratoMPP工具 PAGE 24所在的服務器需要支持能夠訪問oracle,所以需要先安裝好oracle客戶端,再將工具上傳到服務器才能正常使用。Oracle客戶端安裝本章主要為客戶講解如何在Linux操作系統(tǒng)中安裝oracle客戶端,安裝它的目的就是為了使用OratoMPP這個數(shù)據(jù)抽取工具。通常,我們建議在安裝有oracle

26、客戶端的物理機器上,使用OratoMPP這個工具。說明:集群的安裝包中不提供oracle客戶端程序,本章描述僅用于參考。下面以安裝平臺為Linux,使用oracle11g客戶端進行安裝為例介紹安裝步驟。獲取安裝文件Linux操作系統(tǒng)中的oracle的客戶端安裝包文件,通常是rpm包。完整的oracle客戶端安裝包一共包含如下幾個安裝包文件:oracle-instantclient11.2-basic-.0-1.x86_64.rpm oracle-instantclient11.2-sqlplus-.0-1.x86_64.rpmoracle-instantclient11.2-devel-.0-

27、1.x86_64.rpm上面的安裝包文件,可以訪問oracle的官方網(wǎng)站,從網(wǎng)站上下載。我們也已經(jīng)上傳到FTP服務器上可以下載。創(chuàng)建用戶在裝有Linux操作系統(tǒng)的機器上,首先切換到root,創(chuàng)建一個新的操作系統(tǒng)用戶。示例:創(chuàng)建一個oracli用戶。 PAGE 26$ su 密碼:# /usr/sbin/useradd oracle# passwd oracleChanging password for user oracleNew password: Retype new password: passwd: all authentication tokens updated successfu

28、lly.創(chuàng)建目錄按照上一小節(jié)中的介紹,如果成功的創(chuàng)建用戶后,我們接下來的工作,就是需要創(chuàng)建所需要的目錄。示例:使用root用戶,創(chuàng)建目錄,并修改目錄的權限su root密碼:# mkdir -p /home/oracle/network/admin# chown -R oracle:oracle /home/oracle# chmod -R 755 /home/oracle拷貝并修改tnsnames.ora文件我們需要將oracle服務器上面的tnsnames.ora這個文件拷貝裝有oracle客戶端機器上的/home/oralci/network/admin這個目錄下面。 PAGE 26查看

29、oracle服務器端的機器中(2)的tnsnames.oraoraclelinux6 admin$ ll /u01/app/oracle/product/11g/db_1/network/admin/tnsnames.ora -rw-r 1 oracle oinstall 504 Dec 16 18:41 /u01/app/oracle/product/11g/db_1/network/admin/tnsnames.ora在客戶端(4)機器上使用scp命令拷貝文件。rootnode4 /# scp root2:/u01/app/oracle/product/11g/db_1/network/a

30、dmin/tnsnames.ora /home/oracli/network/adminThe authenticity of host 2 (2) cant be established.RSA key fingerprint is fc:af:fb:d6:54:c5:c8:0d:c5:90:b3:2f:97:4a:fc:dc.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 2 (RSA) to the list of known hosts.root2s passwor

31、d: tnsnames.ora 100% 504 0.5KB/s 00:00 由于使用root用戶進行的scp拷貝,因此拷貝結束后,依舊需要修改tnsnames.ora權限 PAGE 27# chown -R oracle:oracle /home/oracle# chmod -R 755 /home/oracle切換為oracli用戶,查看tnsnames.ora內(nèi)容 PAGE 28su oracli$ cat /home/oracli/network/admin/tnsnames.ora # tnsnames.ora Network Configuration File: /opt/ora

32、cle/product/10g/network/admin/tnsnames.ora# Generated by Oracle configuration tools.ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROT

33、OCOL = IPC)(KEY = EXTPROC1) PAGE 29 ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )在tnsnames.ora中,需要將HOST = localhost中的localhost修改為oracle服務器端的IP,例如:2。PORT=1521是oracle默認使用的端口,如果發(fā)生變化,也需要修改。SERVICE_NAME = orcl中orcl是服務名,使用sqlplus64登錄時,需要使用它。該文件像現(xiàn)場客戶索取。使用vi命令修改IP地址,修改完畢后:wq保存退出。PORT端口使用默認的15

34、21端口,無需修改。 PAGE 30vi tnsnames.ora# tnsnames.ora Network Configuration File: /opt/oracle/product/10g/network/admin/tnsnames.ora# Generated by Oracle configuration tools.ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 2)(PORT = 1521) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.5

35、) ) )EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1) PAGE 31 ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )說明:因為該文件是從oracle服務器端拷貝過來的,因此,一旦oracle服務器端的該文件的配置發(fā)生變化,例如增加了服務名,刪除了服務名,我們建議重新拷貝至客戶端的/home/oracli/network/admin/路徑下,并修改每個服務名中的HOS

36、T的IP地址值。如果端口發(fā)生變化,也要修改PORT的端口值。安裝客戶端的rpm包使用root用戶進行rpm包的安裝,由于rmp包之間的依賴關系,因此oracle客戶端rpm包的安裝順序如下:oracle-instantclient11.2-basic-.0-1.x86_64.rpm oracle-instantclient11.2-sqlplus-.0-1.x86_64.rpmoracle-instantclient11.2-devel-.0-1.x86_64.rpm示例:安裝rpm包 PAGE 32rootnode4 # rpm -ivh oracle-instantclient11.2-b

37、asic-.0-1.x86_64.rpm Preparing. # 100% 1:oracle-instantclient11.# 100%rootnode4 # rpm -ivh oracle-instantclient11.2-sqlplus-.0-1.x86_64.rpm Preparing. # 100% 1:oracle-instantclient11.# 100%rootnode4 # rpm -ivh oracle-instantclient11.2-devel-.0-1.x86_64.rpm Preparing. # 100% 1:oracle-instantclient11.

38、# 100%若出現(xiàn)安裝basic包如下報錯,說明環(huán)境中沒有安裝libaio包。rootnode4 # rpm -ivh oracle-instantclient11.2-basic-.0-1.x86_64.rpm error: Failed dependencies:libaio is needed by oracle-instantclient11.2-basic-.0-1.x86_64可以使用yum源安裝libaio的方式進行安裝,安裝完成后即可正常安裝basic包了。 PAGE 33rootnode4 # yum install libaio*Loaded plugins: fastes

39、tmirrorLoading mirror speeds from cached hostfileDataEnginerepo | 2.9 kB 00:00 HDP-2.3 | 2.9 kB 00:00 HDP-UTILS-0 | 2.9 kB 00:00 cdrom | 2.9 kB 00:00 supportrepo | 2.9 kB 00:00 Setting up Install ProcessResolving Dependencies- Running transaction check Package libaio.x86_64 0:0.3.107-10.el6 will be

40、installed Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed- Finished Dependency Resolution配置客戶端用戶的.bash_profile文件用戶還需要修改客戶端用戶下“.bash_profile”文件的配置信息,將下面的配置信息添加到.bash_profile文件中。export ORACLE_HOME=/usr/lib/oracle/11.2/client64export SQLPATH=/usr/lib/oracle/11.2/client64/bin PAGE 34expor

41、t TNS_ADMIN=/home/oracli/network/adminexport LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/libexport PATH=$PATH:$ORACLE_HOME:$LD_LIBRARY_PATHexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8示例: PAGE 35$ cd /home/oracli$ vi .bash_profile # .bash_profile# Get the aliases and functionsif -f /.bashrc ; then . /

42、.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATHexport ORACLE_HOME=/usr/lib/oracle/11.2/client64 PAGE 36export SQLPATH=/usr/lib/oracle/11.2/client64/binexport TNS_ADMIN=/home/oracli/network/adminexport LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/libexport PA

43、TH=$PATH:$ORACLE_HOME:$LD_LIBRARY_PATHexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8保存退出后,使用source命令是配置文件生效。$ source .bash_profile測試連接oracle所有的安裝,配置工作結束后,可以測試oracle客戶端是否可以連接了。oracle服務器端IP:2oracle的登錄用戶和密碼:zzh/123456oracle的服務名;orcl使用sqlplus64命令連接oracle。示例如下: PAGE 37sqlplus64 /nologSQL*Plus: Release .0 - Pr

44、oduction on Fri Oct 18 11:18:04 2013Copyright (c) 1982, 2010, Oracle. All Rights Reserved.SQL conn zzh/123456/2/orcl.5Connected.SQL conn zzh/123456/2/orcl.5 conn pqf/12345678/2/orcl.5OratoMPP使用執(zhí)行OratoMPP,將table_name參數(shù)設置要導出的表名,parallel參數(shù)可設置并行度( (新文件名稱)換行符問題Window下?lián)Q行符為CR LFLinux 下?lián)Q行符為 LFMac 下?lián)Q行符為CRMPP

45、數(shù)據(jù)類型數(shù)值類型DataEngine MPP支持數(shù)據(jù)類型包括嚴格的數(shù)值數(shù)據(jù)類型(TINYINT,SMALLINT,INT,BIGINT,DECIMAL),以及近似的數(shù)值數(shù)據(jù)類型(FLOAT,DOUBLE)。為了更有效地使用存儲空間,請用戶盡量使用最精確的類型。例如,如果一個整數(shù)列被用于在1127之間的值,TINYINT是最好的類型。為了存儲更大范圍的數(shù)值,用戶可以選擇BIGINT或DECIMAL類型。作為SQL92標準的擴展,DataEngine MPP也支持整數(shù)類型TINYINT,SMALLINT和BIGINT。DataEngine MPP支持的數(shù)值類型,如下表所示:類型名稱最小值最大值占用

46、字節(jié)數(shù)TINYINT-1271271SMALLINT-32767327672INT(INTEGER)-214748364721474836474BIGINT-9223372036854775892233720368547758 PAGE 9506806FLOAT-3.40E+383.40E+384DOUBLE-1.7976931348623157E+3081.7976931348623157E+3088DECIMAL(M, D)-(1E+M -1)/(1E+D)(1E+M -1)/(1E+D)動態(tài)計算TINYINT整數(shù)類型,它的范圍是-127到127,TINYINT占用1個字節(jié)。SMALLIN

47、T整數(shù)類型。它的范圍是-32767到32767,SMALLINT占用2個字節(jié)。INT整數(shù)類型。INTEGER的同義詞。它的范圍是-2147483647到2147483647,INT占用4個字節(jié)。BIGINT整數(shù)類型。它的范圍是-9223372036854775806到9223372036854775806,BIGINT占用8個字節(jié)。 PAGE 96FLOATFLOAT代表一個浮點型數(shù)值,占用4個字節(jié),它所存儲的數(shù)值不是一個準確值。允許的值是-3.402823466E+38到-1.175494351E-38,0,1.175494351E-38到3.402823466E+38。這些是理論限制,基于

48、IEEE標準。實際的范圍根據(jù)硬件或操作系統(tǒng)的不同可能稍微小些。DataEngine MPP允許在關鍵字FLOAT后面的括號內(nèi)選擇用位指定精度,即FLOAT(X)。0到23的精度對應FLOAT列的4字節(jié)單精度,24到53的精度對應DOUBLE列的8字節(jié)雙精度。當24=X=53時,F(xiàn)LOAT(X)與DOUBLE(X)等價。同時DataEngine MPP允許使用非標準語法FLOAT(M,D)(M是整數(shù)位數(shù)和小數(shù)位數(shù)的總位數(shù),D是小數(shù)的個數(shù)),DataEngine MPP保存值時進行四舍五入。DOUBLEDOUBLE代表一個浮點型數(shù)值,占用8個字節(jié),它所存儲的數(shù)值不是一個準確值。允許的值是-1.79

49、76931348623157E+308到-2.2250738585072014E-308、0、2.2250738585072014E-308到1.7976931348623157E+308。這些是理論限制,基于IEEE標準。實際的范圍根據(jù)硬件或操作系統(tǒng)的不同可能稍微小些。DataEngine MPP允許在關鍵字DOUBLE后面的括號內(nèi)選擇用位指定精度,即DOUBLE (X)。0到23的精度對應FLOAT列的4字節(jié)單精度,24到53的精度對應DOUBLE列的8字節(jié)雙精度。當24=X=53時,F(xiàn)LOAT(X)與DOUBLE(X)等價。同時DataEngine MPP允許使用非標準語法DOUBLE(

50、M,D)(M是整數(shù)位數(shù)和小數(shù)位數(shù)的總位數(shù),D是小數(shù)的個數(shù)),DataEngine MPP保存值時進行四舍五入。 PAGE 97DECIMALDECIMAL(M, D)代表一個精確值,它所存儲的數(shù)值范圍是-(1E+M -1)/(1E+D)到(1E+M -1)/(1E+D)。在DECIMAL(M, D)數(shù)據(jù)類型中,M是總位數(shù),支持的最大長度為65;D是小數(shù)點后面的位數(shù),支持的最大長度為30。在不需要過高的數(shù)字精度的場景中,DECIMAL中的M可以定義為M18,這樣可以獲得更好的查詢性能。DECIMAL用來存儲那些嚴格要求數(shù)字精度的數(shù)據(jù),例如貨幣數(shù)據(jù),在這種情況下需要指定精度:salary DECI

51、MAL(5,2)在DECIMAL(5,2)中,5表示總位數(shù)(整數(shù)位和小數(shù)位的位數(shù)總和),2是小數(shù)位數(shù)??梢源鎯υ趕alary列的最小值是-999.99,最大值是999.99。DECIMAL值的最大范圍受限于給定的精度和小數(shù)范圍。超過小數(shù)范圍時,會按四舍五入的原則截斷為設定小數(shù)位數(shù)。在定義DECIMAL數(shù)據(jù)列時,如果M和D同時省略,則M取值為10,D取值為0,即DECIMAL(10,0),如果只指定M值,省略D值,那么插入一個非整數(shù)值的數(shù)字時,將按照四舍五入的原則截取到整數(shù)位。字符類型DataEngine MPP目前支持三種字符類型,如下表所示: PAGE 98類型名稱最大長度(字符)CHAR2

52、55VARCHAR10922TEXT10922CHARCHAR(m)CHAR類型僅僅是為了兼容SQL標準,因此,不建議使用者在實際的項目應用場景使用此數(shù)據(jù)類型,建議使用VARCHAR數(shù)據(jù)類型。CHAR是CHARACTER的縮寫。m表示該列中字符串的長度,其范圍是1到255個字符。當存儲的字符長度小于指定的長度m時,在字符串右邊用空格補齊。當讀取CHAR值時,填充的空格依舊保留。如果給一個定義為CHAR類型的列插入一個超出最大長度的字符串,那么系統(tǒng)將報告錯誤信息。VARCHARVARCHAR(m)變長字符串,m表示該列中串的長度,其范圍是1到10922個字符。當存儲VARCHAR類型的數(shù)據(jù)時,不會用空格填充補足列定義長度,存儲的數(shù)據(jù)包含空格時,保留空格。 PAGE 100TEXTTEXT類型僅僅是為了兼容其它數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論