日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

sqoop导入hive时间格式问题解决方案

發布時間:2025/3/12 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqoop导入hive时间格式问题解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sqoop導入hive時間格式問題解決方案

從mysql導入數據時,發現時間格式有問題,要么是時間后面多一位零,要么要使用時間戳,還能不能好好玩耍了?!
于是,我就逛論壇,找大神,最終無果,也許這個問題過于簡單吧,居然沒有大牛討論。想了好幾天,也看了sqoop官網,突然靈光一閃,我怎么不去看看mysql官網呢?于是,最終解決方案漸漸揭開了神秘的面紗~~~~~
首先,我們復習一下:

1. mysql 中日期與時間格式

時間日期格式對照表:

時間日期詳情對比表:

2.時間日期轉換格式:

#第一種方法: date_col = CAST(datetime_col AS DATE) #第二種方法: DATE_FORMAT(SYSDATE(),'%Y-%m-%d %H:%i:%s')

3.sqoop中抽取數據的兩個命令:

--columns column_name1,column_name2... --query 'select column_name1,column_name2...from table where $CONDITIONS'

用法比較:

--columns 后面跟我們需要的屬性名,中間不能有空格,不然會報錯。 --query 后面可以跟一個sql語句,那就自由了,隨便有空格。但是使用時必需要有$CONDITIONS做為條件,沒有其他條件就where $CONDITIONS,有其他條件就用AND連接放在最后面。 另外要說明的是,query后面支持雙引號和單引號,效果相同,但如果是雙引號,where $CONDITIONS會報錯,需要在$前加轉義字符“\”,即where \$CONDITIONS;兩都比較,我們會發現,如果要轉換格式,我們避免不了空格,而且我的需求還是在導入的hive表中添加mysql表中不存在的日期字段。所以只能用--query命令。

4.編輯代碼:

sqoop import --hive-import \ --connect jdbc:mysql://xxx.xxx.x.x:3306/pinyougoudb \ --username root \ --password root \ --hive-table tb_name\ --query "SELECT ID,NAME,FIRST_CHAR,DATE_FORMAT(SYSDATE(),'%Y-%m-%d %H:%i:%s') AS CREATION_TIME FROM TB_BRAND WHERE \$CONDITIONS" \ --delete-target-dir \ --target-dir /export/data/sv/bas/tb_brand \ --null-string '' \ --null-non-string ''\--fields-terminated-by '\001' \-m 1;

5.查看表格數據如下:

hive> select * from tb_name; OK 1 聯想 L 2019-07-17 00:24:32 2 華為 H 2019-07-17 00:24:32 3 三星 S 2019-07-17 00:24:32 4 小米 X 2019-07-17 00:24:32 5 OPPO O 2019-07-17 00:24:32 6 360 S 2019-07-17 00:24:32 7 中興 Z 2019-07-17 00:24:32 8 魅族 M 2019-07-17 00:24:32 9 蘋果 P 2019-07-17 00:24:32 11 諾基亞 N 2019-07-17 00:24:32 12 錘子 C 2019-07-17 00:24:32

6.時間格式轉換

字符變量 描述 %a 工作日縮寫名稱(Sun.. Sat) %b 縮寫的月份名稱(Jan.. Dec) %c 月,數字(0.. 12) %D 這個月的一天,英語后綴(0th, 1st,2nd, 3rd,...) %d 每月的某一天,數字(00.. 31) %e 每月的某一天,數字(0.. 31) %f 微秒(000000... 999999) %H 小時(00.. 23) %h 小時(01.. 12) %I 小時(01.. 12) %i 分鐘,數字(00.. 59) %j 一年中的一天(001.. 366) %k 小時(0.. 23) %l 小時(1.. 12) %M 月份名稱(January.. December) %m 月,數字(00.. 12) %p AM 要么 PM %r 時間,12小時(hh:mm:ss其次是 AM或PM) %S 秒(00... 59) %s 秒(00... 59) %T 時間,24小時(hh:mm:ss) %U 周(00.. 53),周日是一周的第一天; WEEK()模式0 %u 周(00.. 53),周一是一周的第一天; WEEK()模式1 %V 周(01.. 53),周日是一周的第一天; WEEK()模式2; 用于 %X %v 周(01.. 53),周一是一周的第一天; WEEK()模式3; 用于 %x %W 工作日名稱(Sunday.. Saturday) %w 星期幾(0=星期日.. 6=星期六) %X 星期日是星期的第一天的星期,數字,四位數; 用于%V %x 一周的年份,星期一是一周的第一天,數字,四位數; 用于%v %Y 年份,數字,四位數 %y 年份,數字(兩位數) %% 文字%字符 %x x,對于上面未列出的任何 “ x”

7.orcal時間格式轉換:

TO_CHAR(CLUMNS,'yyyy-MM-dd hh24:mi:ss') TO_CHAR(SYSDATE,'yyyy-MM-dd hh24:mi:ss')

什么?你想要時間后面跟更多或更少?好吧,壓箱底兒的寶貝也給你吧:

如還有疑問,請留言,謝謝!

總結

以上是生活随笔為你收集整理的sqoop导入hive时间格式问题解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。