10 工作中常见知识汇总
10 工作中常見知識(shí)匯總
10.1在使用外表時(shí)注意的問題
10.1.1 注意\線的轉(zhuǎn)義問題
10.1.1.1 問題示例
在以上的結(jié)果中可以看出GP把\給轉(zhuǎn)義了
10.1.1.2 解答方法
drop external table if exists ?main.*******_external_20181214;
create external table ?main.*******_external_20181214(
*******
)
LOCATION ('gphdfs://nameservice1/tmp/******-oracle-gp/batchDate/t-ent-baseinfo/*') format 'text' (delimiter E'\u0001' NULL as 'null string' ?ESCAPE as 'OFF'?FILL MISSING FIELDS)
LOG ERRORS SEGMENT REJECT LIMIT 8000 ROWS;
使用ESCAPE as 'OFF'?即可關(guān)閉轉(zhuǎn)義,默認(rèn)的是打開的
詳細(xì)信息請查看:https://gpdb.docs.pivotal.io/5140/ref_guide/sql_commands/COPY.html
10.1.2 \1轉(zhuǎn)特殊字符的問題
10.1.2.1 問題示例
以下是HDFS上展示的效果
13529225049\18088249
以下是GP中顯示的效果
select tel from main.*******_external_20181214 s_ext_sequence='190041387873';
原因是GP加載外表時(shí)沒有進(jìn)行轉(zhuǎn)義特殊字符,導(dǎo)致GP中把\1轉(zhuǎn)換成\U001即為16進(jìn)制的SOH 特殊字符
10.1.2.2 解答方法
drop external table if exists ?main.*******_external_20181214;
create external table ?main.*******_external_20181214(
*******
)
LOCATION ('gphdfs://nameservice1/tmp/******-oracle-gp/batchDate/t-ent-baseinfo/*') format 'text' (delimiter E'\u0001' NULL as 'null string' ?ESCAPE as 'OFF'?FILL MISSING FIELDS)
LOG ERRORS SEGMENT REJECT LIMIT 8000 ROWS;
使用ESCAPE as 'OFF'?即可關(guān)閉轉(zhuǎn)義,默認(rèn)的是打開的
詳細(xì)信息請查看:https://gpdb.docs.pivotal.io/5140/ref_guide/sql_commands/COPY.html
10.2 COPY命令常見錯(cuò)誤匯總
10.2.1數(shù)據(jù)中有雙引字符
10.2.1.1 問題示例
$ psql -d ****** -h 192.168.***** -p 5432 -U gpadmin -c "COPY main.main.*******_external_20181214 ?FROM '/home/xiaoxu/hdfs-to-greenplum/error-data/t****_error_20181214.csv' WITH csv DELIMITER E'\001'";
ERROR: ?unterminated CSV quoted field ?(seg1 192.168.*****:40001 pid=336648)
在以上可以看出數(shù)據(jù)中有雙引號(hào)導(dǎo)致了不能正確的入庫
10.2.1.2 解答方法
解決方式使用sed命令替換掉即可:# ?sed ?-i ‘s/”//g’?filename ?或手動(dòng)去掉即可
10.3 查看字段中有特殊字符SQL
10.3.1 先把表字段獲取出來
select col.column_name from information_schema.columns col where col.table_schema='schemaName' and col.table_name ='tableName' order by col.ordinal_position
schemaName : schema的名字
tableName: 表的名字
10.3.2 查詢表中的錯(cuò)誤數(shù)據(jù)
select filedname from schemaname.tablename where filedname~'[\u0000-\u001f]';
filedname:字段的名字
schemaName : schema的名字
tableName: 表的名字
[\u0000-\u001f] : 是匹配的隱藏特殊字符,詳情請查看:
ASCII控制字符和ASCII可顯示字符_盒馬coding的博客-CSDN博客
10.3.3 注意分布鍵的問題
10.3.3.1 現(xiàn)象說明
在下圖可以看出在使用分布鍵是直接寫成by就會(huì)把字段進(jìn)行了起別名,現(xiàn)象如下
10.3.3.2 現(xiàn)象解答說明
此現(xiàn)象說明:分布鍵問題 · Issue #6539 · greenplum-db/gpdb · GitHub
總結(jié)
以上是生活随笔為你收集整理的10 工作中常见知识汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python核心,内建函数,高阶函数
- 下一篇: opencv 星空_opencv如何将大