Impala实践之八:脚本中引号问题

前言

写脚本,遇到一个小坑,python和seven帮忙填了一下,突然想起来之前貌似遇到过类似的情况。

版本一

脚本:

sql=$1
coordinator=$2
output_file=$3

echo $sql
echo "------"
echo $output_file
echo "------"
echo $coordinator

impala-shell -i $coordinator -q $sql -o $output_file

执行命令:

bash impala-exec.sh "
SELECT po_purchaseinfi_b.vordercode AS 采购订单号, SUBSTR(po_purchaseinfi.dbilldate, 1, 10) AS 入库单据日期, po_purchaseinfi.vbillcode AS 入库单号, SUBSTR(po_order.dbilldate, 1, 10) AS 订单日期, sm_user.user_name AS 采购入库制单人, bd_supplier.name AS 供应商, bd_psndoc.name AS 采购员, bd_marbasclass.name 物料基本分类, bd_material.code AS 物料编码, bd_material.name AS 物料名称, bd_material.def16 AS 适用车型, bd_material.def17 AS 客户零件编码, bd_material.def18 AS 客户零件名称, bd_material.def19 AS 零件编码, bd_material.materialspec AS 规格, measdoc.name AS 主单位, bd_currtype.name AS 币种, --po_purchaseinfi_b.cunitid AS cunitid, --po_purchaseinfi_b.corigcurrencyid AS corigcurrencyid, po_purchaseinfi_b.ninnum AS 入库主数量, CASE WHEN ABS(po_purchaseinfi_b.ninnum - NVL(po_purchaseinfi_b.naccumsettlenum, 0)) < ABS(po_purchaseinfi_b.ninnum - NVL(t_m45_exc.nsignnum, 0)) THEN po_purchaseinfi_b.ninnum - NVL(po_purchaseinfi_b.naccumsettlenum, 0) ELSE po_purchaseinfi_b.ninnum - NVL(t_m45_exc.nsignnum, 0) END AS 待开票主数量, po_purchaseinfi_b.norigprice AS 无税单价, po_purchaseinfi_b.norigtaxprice AS 含税单价, CASE WHEN ABS(po_purchaseinfi_b.ninnum - NVL(po_purchaseinfi_b.naccumsettlenum, 0)) < ABS(po_purchaseinfi_b.ninnum - NVL(t_m45_exc.nsignnum, 0)) THEN (po_purchaseinfi_b.ninnum - NVL(po_purchaseinfi_b.naccumsettlenum, 0)) * po_purchaseinfi_b.norigtaxprice ELSE (po_purchaseinfi_b.ninnum - NVL(t_m45_exc.nsignnum, 0)) * po_purchaseinfi_b.norigtaxprice END AS 待开票价税合计, po_purchaseinfi_b.norigmny AS 采购入库无税金额, po_purchaseinfi_b.ntax AS 采购入库税额, po_purchaseinfi.pk_psndoc AS pk_psndoc1, po_purchaseinfi_b.pk_srcmaterial AS pk_srcmaterial1, po_purchaseinfi_b.pk_material AS pk_material1, po_purchaseinfi_b.cunitid AS cunitid1, po_purchaseinfi_b.pk_supplier AS pk_supplier1, po_purchaseinfi_b.ccurrencyid AS ccurrencyid, po_purchaseinfi_b.naccumsettlenum AS naccumsettlenum, po_purchaseinfi_b.ninnum - po_purchaseinfi_b.naccumsettlenum AS nosettlenum, po_purchaseinfi_b.ninnum - t_m45_exc.nsignnum AS noinvoicenum, t_m45_exc.nsignnum AS naccuminvoicenum FROM NC65.po_purchaseinfi po_purchaseinfi INNER JOIN NC65.po_purchaseinfi_b po_purchaseinfi_b ON po_purchaseinfi.pk_stockps = po_purchaseinfi_b.pk_stockps LEFT JOIN NC65.po_order po_order ON po_purchaseinfi_b.pk_order = po_order.pk_order INNER JOIN (SELECT cgeneralbid, NVL(nsignnum, 0) AS nsignnum FROM NC65.IC_PURCHASEIN_E) t_m45_exc ON po_purchaseinfi_b.pk_stockps_b = t_m45_exc.cgeneralbid INNER JOIN NC65.sm_user sm_user ON po_purchaseinfi.billmaker=sm_user.cuserid INNER JOIN NC65.bd_supplier bd_supplier ON po_purchaseinfi_b.pk_supplier=bd_supplier.pk_supplier left JOIN NC65.bd_psndoc bd_psndoc on po_purchaseinfi.pk_psndoc=bd_psndoc.pk_psndoc left join NC65.bd_material bd_material on po_purchaseinfi_b.pk_material=bd_material.pk_material left join NC65.bd_marbasclass bd_marbasclass on bd_material.pk_marbasclass=bd_marbasclass.pk_marbasclass LEFT JOIN NC65.bd_measdoc measdoc ON bd_material.pk_measdoc = measdoc.pk_measdoc left join NC65.bd_currtype bd_currtype on po_purchaseinfi_b.pk_estcurrency=bd_currtype.pk_currtype WHERE po_purchaseinfi.dr = 0 AND po_purchaseinfi_b.dr = 0 AND po_purchaseinfi.pk_group = '000112100000000006F5' AND po_purchaseinfi_b.pk_group = '000112100000000006F5' AND ( CASE WHEN ABS(po_purchaseinfi_b.ninnum - NVL(po_purchaseinfi_b.naccumsettlenum, 0)) < ABS(po_purchaseinfi_b.ninnum - NVL(t_m45_exc.nsignnum, 0)) THEN po_purchaseinfi_b.ninnum - NVL(po_purchaseinfi_b.naccumsettlenum, 0) ELSE po_purchaseinfi_b.ninnum - NVL(t_m45_exc.nsignnum, 0) END ) <> 0 AND ( po_purchaseinfi_b.pk_financeorg = '00011210000000001TWZ' --AND po_purchaseinfi.dbilldate >= '2025-04-01 00:00:00' --AND po_purchaseinfi.dbilldate <= '2025-04-29 23:59:59' --AND po_order.dbilldate >= '2025-04-01 00:00:00' --AND po_order.dbilldate <= '2025-04-29 23:59:59' ) --and po_purchaseinfi_b.vordercode='CD2025040100015751' --AND po_purchaseinfi_b.pk_financeorg = '00011210000000001TWZ' --AND po_purchaseinfi.pk_org = '000112100000000006F5' ORDER BY po_purchaseinfi.vbillcode; 帮我将这个脚本转换成impala能够执行成功
最新发布
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值