从配置单元导出数据时面临问题:
Hive版本:2.6.5
大查询输出错误中的质量检查:错误消息:从位置2121402186开始的行中的值太多。发现22列,而预期为21
步骤1:使用命令将数据从配置单元导出到csv中
beeline -u $HIVE_JDBC_URLL --silent=true --outputformat=tsv2 --showHeader=false --silent=true -e " SELECT
a.abc,
a.mno,
a.xyz,
CASE
WHEN a.xyz LIKE '%=%' THEN DECRYPT(STRING(b.decryptid), STRING(xyz))
ELSE a.xyz
END as xyz,
FROM
db.a a
LEFT JOIN
b
ON
(a.abc = b.def)" > "/tmp/abc.csv"
第二步:将这个文件上传到大查询,看看数据加载是否正确。
Bigquery失败,出现上述错误消息。我的猜测是,解密后,它在整个文件的几行中添加了一个额外的选项卡。请建议一种从文件中找出额外选项卡的方法,以便使用ansible自动执行此操作。
还有一种可能的方法,在从配置单元提取到csv时对字段进行双引号引用,这样我们就可以避免额外的选项卡了?请建议应该向直线命令中添加什么来执行此操作?
或
如何验证每行中的列数?
I由于配置单元导出问题,生成了错误或添加了一个额外的选项卡,我不得不使用regex_replace来解决它。
regexp_replace(a.xyz,'\t\t,''(为xyz,