create table escape (id string, name string)
row format delimited fields terminated by '"';
load data local inpath '/home/tianzhao/book/escape.txt'
overwrite into table escape;
escape.txt的內容是:
joe"2\"3333
hank"2\"3333
表沒有轉義,那麼兩個「都會當作字段分隔符,查詢結果是:
select * from escape;
joe 2\
hank 2\
alter table escape set serdeproperties ('escape.delim' = '\\'); 給表加上了轉義字元\,\後面的字元會被轉義,直接跳過,如果是分隔符不會被當作分隔符。查詢結果是:
select * from escape;
joe 2"3333
hank 2"3333
create table escape2 (id string, name string)
row format delimited fields terminated by '"';
load data local inpath '/home/tianzhao/book/escape2.txt'
overwrite into table escape2;
escape2.txt 的內容是:
joe"2"3333"44
hank"2"3333"44
實際資料比表的字段要多。
select * from escape2;
joe 2
hank 2
alter table escape2 set serdeproperties ('serialization.last.column.takes.rest' = 'true');
serialization.last.column.takes.rest 的意思是最後乙個欄位的內容是否包含那些多餘的資料:
select * from escape2;
joe 2"3333"44
hank 2"3333"44
hive只支援單位元組的分隔符,lazystruct、lazy******serde裡面可以看到hive如何序列化、反序列化的過程。
alter table ctas_null_format1 set serdeproperties ('serialization.null.format'='\\n');
Hive刪除含有特殊字元 轉義字元的分割槽
之前寫的py指令碼裡面需要傳日期引數 python x.py 正確應該為 python x.py 但是當時忘記引用變數了,結果在分割槽中有乙個含有特殊字元的分割槽 show partitions dt 7bdt 用傳統的刪除分割槽的語句無效,把單引號換成雙引號也沒有效果。經試了一番發現用傳參時的變數...
轉義字元(轉義序列)
在程式設計中有一些字元是打不出來的,比如換行,提示音,下乙個製表位等等,於是程式語言的開發者就設計了轉義序列 escape sequence 這種東西用來表達這些字元。下面就是一些轉義字元 轉義字元 功能 反斜槓 單引號 雙引號 aascii響鈴符 bel bascii退格符 bs fascii進紙...
mysql 轉義 MySql字元轉義
在字串中,某些序列具有特殊含義。這些序列均用反斜線 開始,即所謂的轉義字元。mysql識別下面的轉義序列 0ascii 0 nul 字元。單引號 雙引號 b退格符。n換行符。r回車符。ttab字元。zascii 26 控制 ctrl z 該字元可以編碼為 z 以允許你解決在windows中ascii...