使用Sqoop命令从Oracle同步数据到Hive,修复数据乱码 %0A的问题

一、创建一张Hive测试表

create table test_oracle_hive(id_code      string,phone_code    string,status    string,create_time    string
) partitioned by(partition_date string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

创建分区字段partition_date,指定分隔符“,”

二、编写Sqoop数据同步命令

我这里使用的是shell脚本的方式:

#!/bin/bash
export LANG="en_US.UTF-8"
part_date=etl_date=`date "-d +0 day" "+%Y%m%d"`
echo "当前分区时间为: $part_date"
sqoop import -D mapred.job.queue.name=root.realtime_queue --connect jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/testdb --username test --password test01 --table APP.TEST_ORACLE_HIVE_TWO --hive-import --hive-partition-key partition_date --hive-partition-value $part_date --hive-table xxx.test_data_oracle_hive --fields-terminated-by ',' --null-string '\\N' --null-non-string '\\N' --hive-overwrite -m 1
if [ $? -eq 0 ]; thenecho ">>>>>>>>>>>>>Oracle同步Hive数据库-执行成功!" 
elseecho ">>>>>>>>>>>>>Oracle同步Hive数据库-执行失败!"
fi

命令相关属性说明:

  1. --connect:连接Oracle数据库的URL,例如jdbc:oracle:thin:@219.216.110.120:1521:orcl。
  2. --username:连接Oracle数据库的用户名,例如TEST1。
  3. --password:连接Oracle数据库的密码,例如test1。
  4. --table:要导入的Oracle表名,例如TEST1。
  5. --hive-table:在Hive中要创建或覆盖的表名,例如test1_test1。
  6. --fields-terminated-by:指定字段分隔符,例如'\t'(制表符)。
  7. --hive-import:启用Hive导入。
  8. --hive-overwrite:在导入数据时覆盖已存在的Hive表。
  9. --null-string:指定空值对应的字符串,例如'NULL'。
  10. --null-non-string:指定非空值对应的字符串,例如'NULL'。

三,执行脚本命令

我这里是使用的azkaban做的任务执行,也可以根据自己所需,sh xxx.sh执行脚本,如图:

任务执行完成,发现数据有乱码:

分区时间是这样取值的:

在服务器单独执行命令,发现是文件生成的时候乱码的:

四、问题修改

然后,检查命令没问题后,发现我使用的文本编辑器 NotePad++ 在编写命令时,

是在Windows(CR LF) 模式下的,转换为 Unix(LF) ,如图:

然后,重新执行脚本,数据就恢复正常了

五、Sqoop常用命令

导入数据:

sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table users --target-dir /user/hadoop/data

导出数据:

sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password root --table users --export-dir /user/hadoop/data

查询Job列表:

sqoop job --list

查询Job详细信息:

sqoop job --show jobname

执行Job

sqoop job --exec jobname

删除Job

sqoop job --delete jobname

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/149220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言基础篇4:变量、存储、库函数

1 局部变量和全局变量 在介绍局部变量和全局变量前,先了解一些关于作用域方面的内容。作用域的作用就是决定程序中的哪些语句是可用的,换句话说,就是程序中的可见性。作用域有局部作用域和全局作用域,那么局部变量就具有局部作用域…

应用软件安全编程--21避免使用不安全的哈希算法

在安全性要求较高的系统中,不可使用被业界公认不安全的哈希算法(如 MD2、MD4、MD5、SHA、 SHA1 等)来保证数据的完整性。 对于避免使用不安全的哈希算法的情况,示例1给出了不规范用法(Java 语言)示例。示例2给出 了规范用法(Java 语言)示例。 示例1:…

Docker部署MinIO对象存储服务器结合Cpolar实现远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远…

YB506AB是一款理电池充、放电管理专用芯片,集成锂电池充电管理和降压DC-DC电路。

YB506AB 锂电转可充电AA/AAA电池专用SOC芯片 概述: YB506AB是一款理电池充、放电管理专用芯片,集成锂电池充电管理和降压DC-DC电路。充电过程满足锂电池三段式滑流/恒流/恒压充电规范,B506内部的线性充电电路采用了恒流可配置模式,可以通过…

【shell】 1、bash语法超详细介绍

文章目录 修改前缀路径dirname set常用函数参数变量local 返回值正则打印第 n 行获取行号核对数据库各表数量jq查询检查日志 sshpassexpect数组xargs bash manual 修改前缀 参考 export PS1"bash> "路径 dirname strip last component from file name dir$(…

数据存储模型

1、前言 写点什么东西呢 之前大学毕设搞了个高并发模型,里面使用到了select模型,里面用到了一个内存池,支持多客户端连接、登录、消息发送,现在工作经验三年多了,开发经验积累了不少,但是对喜爱的C的一些知…

Nodejs--Express框架使用

目录 一.概念 二.项目目录结构 三.app.js 四.项目需要的中间件 五.Mysql连接 六.日志配置 七.实体模型配置 八.统一结果封装 九.app.js的详细配置 十.自定义登录拦截器 十一.route路由配置 十二.controller处理 十二:静态页面: 十三&#xff…

Pytest自动化测试框架:mark用法---测试用例分组执行

pytest中的mark: mark主要用于在测试用例/测试类中给用例打标记(只能使用已注册的标记名),实现测试分组功能,并能和其它插件配合设置测试方法执行顺序等。 如下图,现在需要只执行红色部分的测试方法,其它方法不执行&am…

辅助笔记-Jupyter Notebook的安装和使用

辅助笔记-Jupyter Notebook的安装和使用 文章目录 辅助笔记-Jupyter Notebook的安装和使用1. 安装Anaconda2. conda更换清华源3. Jupter Notebooks 使用技巧 笔记主要参考B站视频“最易上手的Python环境配置——Jupyter Notebook使用精讲”。 Jupyter Notebook (此前被称为IPyt…

在Oracle 11g 数据库上设置透明数据加密(TDE)

本文回答2个问题: 11g下简明的TDE设置过程由于11g不支持在线TDE,介绍2中11g下的加密表空间的迁移方法 设置表空间TDE之前 表空间没有加密时,很容易探测到明文数据: create tablespace unsectbs datafile unsectbs.dbf size 10…

学习教授LLM逻辑推理11.19

学习教授LLM逻辑推理 摘要1 引言2前言2.1事件关系提取2.2 演绎推理 3 揭示逻辑推理中的LLMS3.1 LLM如何执行任务3.1.1数据源3.1.2实验装置3.1.3 分析 3.2 LLM如何执行抽象多跳推理?3.2.1数据来源3.2.2 实验装置。3.2.3 分析。 4 逻辑推理教学4.1 LLM的上下文学习4.2…

设置pdb自动启动

参考文档: How to Preserve Open Mode of PDBs When the CDB Restarts (Doc ID 1933511.1) -- 查看pdb的保留状态.无保留状态 select * from DBA_PDB_SAVED_STATES; SYScdbtest SQL> select * from DBA_PDB_SAVED_STATES;no rows selectedSYScdbtest SQL> -…

LeetCode 面试题 16.25. LRU 缓存

文章目录 一、题目二、C# 题解 一、题目 设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存被填满时,它应该删除最近最少使用的…

音频录制实现 绘制频谱

思路 获取设备信息 获取录音的频谱数据 绘制频谱图 具体实现 封装 loadDevices.js /*** 是否支持录音*/ const recordingSupport () > {const scope navigator.mediaDevices || {};if (!scope.getUserMedia) {scope navigatorscope.getUserMedia || (scope.getUserM…

国外客户发开发信怎么发?写外贸邮件方法?

如何给国外客户发开发信?给老外发外贸开发信的技巧? 与国外客户保持联系并积极开展业务合作变得至关重要。一种有效的方式是通过发展信件,这可以帮助建立关系、传递信息和促成商机。蜂邮将介绍如何向国外客户发开发信,以确保您的…

python3:split()分割字符串为字符/字符串列表 2023-11-20

split() 方法通过指定分隔符对字符串进行切片,该方法将字符串分割成子字符串并返回一个由这些子字符串组成的列表。 #split("分隔符","分割次数") str_test"this is test" print (str_test.split()) # split()默认以空格为分…

2023大厂高频面试题之CSS篇(2)

系列文章: 2023前端大厂面试题之JavaScript篇(1) 2023前端大厂面试题之JavaScript篇(2) 2023前端大厂面试题之JavaScript篇(3) 2023前端大厂面试题之JavaScript篇(4) 2022大厂高频面试题之HTML篇 2023前端大厂高频面试题之CSS篇 2023前端大厂高频面试题之Vue篇(1) 2023前端大厂…

金融市场数据至上:QuestDB 为您的数据提供最优解 | 开源日报 No.81

vlang/v Stars: 34.7k License: MIT V 是一个开源项目,它是一种简单、易于学习的编程语言。该项目具有以下核心优势和主要功能: 简洁性:可以在周末内掌握这门语言。快速编译:使用 Clang 后端约为 110k loc/s,本地和…

MR素数测试及 pycryptodome库下 已知MR伪素数以及强伪证 生成指定伪随机数生成器绕过素性检测

MR素数测试在密码学库中应用广泛,通常作为BSPW的一部分来进行素数测试,由于在其算法中,有随机数的使用(选择一个随机的base),若一个MR伪素数 n n n,已知其在某一个强伪证 a a a(随机…

Leetcode—3.无重复字符的最长子串【中等】

2023每日刷题&#xff08;三十二&#xff09; Leetcode—3.无重复字符的最长子串 实现代码 class Solution { public:int lengthOfLongestSubstring(string s) {unordered_set<char> smap;int maxlen 0;int left 0;for(int i 0; i < s.size(); i) {while(smap.fi…