sqoop 分隔符与字段内容冲突解决方案

当源表数据中存在与默认或自定义分隔符冲突的情况,可以尝试以下方法:1. 检查并替换字段内含有的分隔符;2. 使用`--hive-drop-import-delims`参数处理行和列分隔符。示例的Sqoop命令展示了如何执行这些操作,包括使用REPLACE函数替换字段内的分隔符,并指定Hive导入时删除导入分隔符。
摘要由CSDN通过智能技术生成

一. 解决方案

1.首先查看source表的表结构及数据,可大概判断出哪些字段的值中可能包含分隔符。使用  字段名 like '%分割符%’,能准确判断出此字段是否包含分隔符,如果包含可选择其它分隔符试试,如果能挑选和数据不冲突的分隔符,那么sqoop就可以选定此分隔符。

2.这次遇到的表,什么分隔符以及转义字符(\b,\r,\n,\t,\r)都包含,所以采用替换字段中的分隔符的方式进行处理,同时hive这边的行分割符是\n,所以需要使用如下参数进行处理--hive-drop-import-delims

具体的sqoop语句如下:

sqoop import \
--hive-import \
--connect 地址 \
--username 账号 \
--password 密码 \
--query "select order_id, order_create_time, trans_time, 'status', trade_type, pay_type, prod_category, prod_sub_category, prod_name, pay_to_phone, pay_to_phone_prov, pay_currency_type, trans_amount, rep_code, pay_cust_acct_id, pay_cust_user_id, pay_cust_name, pay_cust_id_card_no, pay_cust_card_no, pay_cust_card_prov, pay_cust_card_type, col_cust_acct_id, col_cust_user_id, col_cust_name, col_cust_id_card_no, col_cust_card_no, col_cust_card_prov, shop_to_name, shop_to_mobile, shop_to_province, shop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值