# Oracle 建立hive外部表
使用oracle的大数据连接器向建立hive的外部表,在通过在oracle中根据外部表建立内部表(create table as select * from external_table)即可实现hive表向oracle导出。
## Steps
1. 登陆141 fast用户,进入程序目录:
```shell # login to fast@10.92.59.141 cd cd /home/fast/luohai/loadmr2ora/bin ```
2. 配置oracle文件与文件路径变量
```shell
ORACLE_CONF_FILE=../conf/oracles/ORACLE_65.CONF
```
其中ORACLE_65.CONF 文件如下配置:
```ini hostname=10.92.190.65 port=1521 username=fastmdt schemaname=fast password=passwordtodb procedure=p_mdt_hdfs_inst # 65 为HIVE_EXT_DIR,135与62 为EXT_DATA_PATH exttab_defaultDirectory=HIVE_EXT_DIR connection_url=jdbc:oracle:thin:@//$hostname:$port/$schemaname connection_user=$username connection_password=$password ```
3. 配置程序运行变量
```shell export APP_HOME=/home/fast/luohai/loadmr2ora export LOGFILE=$APP_HOME/log/run.log export APP_HOME=/home/fast/luohai/loadmr2ora export OSCH_HOME=/home/fast/orahdfs-3.8.0 export HADOOP_CLASSPATH="$OSCH_HOME/jlib/*:/usr/hdp/2.5.0.0-1245/hive/lib/*:/usr/hdp/2.5.0.0-1245/hive/conf/:/usr/hdp/2.5.0.0-1245/hadoop/lib/lib/*" ```
4. 导入shell函数:
```shell source common.sh ```
5. 建立外部表
```shell # etlOperate hive_db hive_tb ext_oracle_tb operation oracle_conf_path etlOperate TEST tdlte_mro_locate_hour_zhengzhou201812 tdlte_mro_locate_hour_zz201812 createTable $ORACLE_CONF_FILE ```
注意:若oracle没有该表可以使用相同表名
etlOperate test MRCP_G50_FREQ_CPF_T(hive数据表) MRCP_G50_FREQ_CPF_T(oracle表名) createTable $ORACLE_CONF_FILE
其中:
* **ext_oracle_tb** 表名不能超过32
为在oracle中建立的外部表
* **operation**
对该外部表所做的操作:
**createTable** 建立新外部表
**drop** 删除外部表
**publish** 更新外部表(在hive中数据换了之后)