最近遇到一个问题,关于汉字在执行的时候插入不到数据库中,经查找原因得出如下结论:

INSERT INTO T88_EPS_TXN_MONTH_SALE_DATA_STAT
(
     Month_Cd                        /**--月代码        **/
    ,Index_Cd                        /**--指标编码           **/
    ,Index_Name                      /**--指标名称           **/
    ,Index_Val                       /**--指标值          **/
    ,Month_Name                      /**--月份名称           **/
    ,Etl_Job                         /**--Etl任务名          **/
    ,Etl_Last_Dt                     /**--最近加载数据日期   **/
)
SELECT
     SUBSTR(a1.Txn_Dt,1,6) AS Month_Cd1
    ,'Income'
    ,'销售净收入'
    ,SUM(NVL(a1.Eps_Channel_Sale_Amt,0))/100-SUM(NVL(a1.Buy_Goods_Num,0)*a2.Purchase_Price)/100
    ,SUBSTR(a1.Txn_Dt,1,4)||'年'||SUBSTR(a1.Txn_Dt,5,2)||'月' AS Month_Name1
    ,'T88_EPS_TXN_MONTH_SALE_DATA_STAT'
    ,'$etl_date'
FROM ${PDATADB}..T05_EPS_ORDER_EVT a1
LEFT JOIN ${PDATADB}..T02_EPS_GOODS a2
     ON a1.Goods_Id = a2.Goods_Id
WHERE Month_Cd1=SUBSTR('$etl_date',1,6) 
GROUP BY   Month_Cd1
          ,Month_Name1
;

插入汉字的字段类型必须是  NVARCHAR类型的。

保存sql的脚本格式必须是UTF-8 无BOM的。

这样 nzsql -u etldev -pw etldev  -d pdata_dev -host 10.10.52.241 -f test.sql

执行 才不会产生中文的错误,汉字才能插入到数据库中!