代码:
<?php
//////////////////////////////////////////////////////////
//
//ダイハツ車種 car_cd毎 平均価格 JSON書き出しバッチ
//
//////////////////////////////////////////////////////////
require_once ('/usr/daihatsu_web/HTTP_PHP/lib/common.php');
require_once (F_LIB_COMM.'Db.php');
define( 'MAP_LOCK_FILE', '/tmp/price_average_lock_file' );
define( 'MAP_OUT_FILE' , F_LIB.'price_average.json' );

//二重起動を防止するため
if (file_exists(MAP_LOCK_FILE)){
    echo "Error,running......\n";
    exit;
} else {
    touch(MAP_LOCK_FILE);
}

//DBクラスのインスタンス生成
$db = new Db();

// DB接続
if ( -1 == $db->connect( DAIHATSU_DB ) ) {
    //connectionエラー
    echo"error connection!\n";
    exit;
}

print "開始".date("Y-m-d H:i:s")."\n";

$sql = "SELECT z.n_p_brand_nm_n,z.n_car_cd,case when (z.n_car_cd in (10502004,10502018,10502014,10502020) and zk.custom_flg=0) then c.car_nm when (z.n_car_cd in (105020

$result = $db->query( $sql );
$car_cd_array = [];
if (-1 != $result) {
$count = pg_num_rows( $result );
    for ( $i = 0; $i < $count; $i++ ) {
        $all_average[$i] = pg_fetch_object( $result );
        array_push($car_cd_array,$all_average[$i]->n_car_cd);
    }
}else{
    echo "error select!\n";
    exit;
}
$car_cd_str = implode(",",$car_cd_array);
$sql_nenpi = "select car_cd,max(nenpi) from catalog_master where nenpi != '99999' AND car_cd in ($car_cd_str) group by car_cd";
$result_nenpi = $db->query( $sql_nenpi );
if(-1 != $result_nenpi){
    $nenpi_count = pg_num_rows( $result_nenpi );
    for( $i = 0; $i < $nenpi_count; $i++){
        $all_nenpi[$i] = pg_fetch_object($result_nenpi);
    }
}else{
    echo "error select!\n";
    exit;
}

foreach ($all_average as $all_key => $all_val){
        foreach ($all_nenpi as $nenpi_key => $nenpi_val){
                if($nenpi_val->car_cd == $all_val->n_car_cd){
                        $all_val->max = $nenpi_val->max;
                        break;
                }
        }
}
$db->close();

$json = arr_to_json($all_average);

$length = file_put_contents(MAP_OUT_FILE, $json, LOCK_EX);

if ($length > 100) {
    unlink(MAP_LOCK_FILE);
}
print "完了".date("Y-m-d H:i:s")."\n";
exit;

function convert_enc(&$value,$key,$enc) {
    $value = mb_convert_encoding($value,$enc->to,$enc->from);
}

function arr_to_json($dataArr,$fromenc='EUC_JP',$toenc='UTF-8') {
    $enc = new stdClass;
    $enc->from = $fromenc;
    $enc->to = $toenc;

    foreach ($dataArr as $val) {
        array_walk_recursive($val,'convert_enc',$enc);
    }
    $json_data  = json_encode($dataArr, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    //$json_data = "{ record:".$json_data."}";
    return $json_data;
}

这其中是根据SELECT z.n_p_brand_nm_n,z.n_car_cd,case when (z.n_car_cd in (10502004,10502018,10502014,10502020) and zk.custom_flg=0) then c.car_nm when (z.n_car_cd in (10502004,10502018,10502014,10502020) and zk.custom_flg=1) then c.car_nm||'カスタム' else c.car_nm end as car_nm ,  ceil(AVG(case z.price_jpn when 'ASK' then null else z.price end)/10000) as price_average FROM zaiko z,car_master c,zaiko_kubun zk WHERE z.n_brand_cd = c.brand_cd and z.n_car_cd = c.car_cd and z.goo_car_id = zk.goo_car_id and z.n_brand_cd = 1050 GROUP BY z.n_brand_cd,z.n_p_brand_nm_n,z.n_car_cd,c.car_nm,zk.custom_flg;
查询出的结果:

n_p_brand_nm_n | n_car_cd | car_nm | price_average
----------------+----------+------------------------+---------------
ダイハツ | 10501003 | シャレード | 126
ダイハツ | 10501004 | ミラ | 100
ダイハツ | 10501006 | クオーレ | 20
ダイハツ | 10501007 | リーザ | 48
ダイハツ | 10501008 | オプティ | 4000
ダイハツ | 10501010 | アルティス | 5518
ダイハツ | 10501012 | コペン | 2141
ダイハツ | 10501015 | エッセ | 55
ダイハツ | 10501017 | ミラココア | 109
ダイハツ | 10501018 | ミライース | 150
ダイハツ | 10501510 | ブーン | 20
ダイハツ | 10502001 | デルタワイドワゴン | 134
ダイハツ | 10502004 | ムーヴ | 174
ダイハツ | 10502004 | ムーヴカスタム | 138
ダイハツ | 10502009 | アトレーワゴン | 20
ダイハツ | 10502014 | タント | 180
ダイハツ | 10502014 | タントカスタム | 164
ダイハツ | 10502015 | ムーヴラテ | 30
ダイハツ | 10502016 | ビーゴ | 50
ダイハツ | 10502018 | ムーヴコンテ | 123
ダイハツ | 10502018 | ムーヴコンテカスタム | 41
ダイハツ | 10502020 | タントエグゼ | 170
ダイハツ | 10502020 | タントエグゼカスタム |
ダイハツ | 10502022 | ウェイク | 1290
ダイハツ | 10502023 | キャスト | 129
ダイハツ | 10503002 | アトレー | 13
ダイハツ | 10504111 | デルタトラック | 20
ダイハツ | 10504112 | ハイゼットトラック | 143
ダイハツ | 10507113 | ハイゼットグランカーゴ |
ダイハツ | 10507114 | ハイゼットカーゴ | 200
ダイハツ | 10507115 | ハイゼットバン |
(31 rows)

出现的问题就是根据sql语句查询出来的结果,通过batch执行后,会一次出现,一次消失,经过调查问题出现在sql语句上:

select car_cd,max(nenpi) as nenpi from catalog_master where nenpi_wltc != '99999' AND car_cd in (10501003,10501004,10501006,10501007,10501008,10501010,10501012,10501015,10501017,10501018,10501510,10502001,10502004,10502004,10502009,10502014,10502014,10502015,10502016,10502018,10502018,10502020,10502020,10502022,10502023,10503002,10504111,10504112,10507113,10507114,10507115) group by car_cd;

<br>表内的这个字段多达几千条数据,但是where条件是and拼接的,查询时间可能过长 ,去掉 nenpi_wltc != '99999'这个条件就不会出现了。解决办法就是重新修改sql.

惭愧,找到最后发现的原因是开发环境下,做了负载均衡,存在两台服务器,测试时进行了改修数据,确只改修了其中一台,因此,查询会出现,两次结果不一致的情况。记录一下!加油

batch文件改修中遇到的sql问题的更多相关文章

  1. SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏

    如果在客户端计算机上启动Microsoft SQL Server 2012的 ClickOnce 版本的 Microsoft SQL Server 报表生成器时出现"无法检索应用程序文件.部 ...

  2. Delphi 7 在程序中直接执行SQL脚本文件

    Delphi 7 在程序中直接执行SQL脚本文件 在处理MSDE一些操作中.需要执行一些SQL脚本.有的是从SQLServer 2000中生成的SQL为后缀的脚本.在MSDE中没有企业管理器,操作都是 ...

  3. shell脚本中执行mysql sql脚本文件并传递参数

    1 shell 文件内容替换 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法. 调用sed命 ...

  4. docker中mysql导入sql文件

    1.先将文件导入到容器 docker cp **.sql [容器名]:/root/ 2.进入容器 docker exec -ti [容器名/ID]/bin/bash 3.将文件导入数据库 mysql ...

  5. mysql 中常用的 sql 语句

    SQL分类: DDL-----数据定义语言(CREATE--创建,ALTER--修改. DROP--删除表,DECLARE--声明) DML-----数据定义语言(SELECT--查询,DELECT- ...

  6. SQL Server中常用的SQL语句(转):

    SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...

  7. PL/SQL中批量执行SQL脚本(不可把所有的语句都复制到New SQL Windows)

    PL/SQL中批量执行SQL脚本,不可把所有的语句都复制到New SQL Window,因为这样会导致缓冲区过大而进程卡死! 最好的办法是将要执行的SQL脚本存放到指定文件中,如C:\insert.s ...

  8. SQL*PLUS中批量执行SQL语句

    SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ...

  9. win7+SQL2008无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever

    今天在win7+SQL2008的环境下操作分离附加数据库,分离出去然后再附加,没有问题.但是一把.mdf文件拷到其它文件夹下就出错,错误如下:无法打开物理文件 "E:\db\MyDB.mdf ...

随机推荐

  1. LeetCode328----奇偶链表

    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O(1),时 ...

  2. spring的AOP基本原理

    一.什么是AOP AOP(Aspect Oriented Programming),意思是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP基于IoC基础,是对OOP ...

  3. Android6.0运行时权限的处理Demo

    MainActivity.java package com.loaderman.permissionsdemo; import android.Manifest; import android.con ...

  4. Promise.then链式调用

    let a = new Promise((resolve,reject)=>{ resolve(1) }).then((r)=>{console.log(r)}).then(()=> ...

  5. MySQL 树形结构 根据指定节点 获取其所有父节点序列

    背景说明 需求:MySQL树形结构, 根据指定的节点,获取其所有父节点序列. 问题分析 1.可以使用类似Java这种面向对象的语言,对节点集合进行逻辑处理,获取父节点. 2.直接自定义MySQL函数  ...

  6. pycharm修改代码后第一次运行不生效解决

    问题: 用pycharm每次修改代码后第一次运行还是原来的结果,运行第二次的时候才是修改后代码的结果 解决: 每次修改代码后保存一下即可解决

  7. 由于SID连接不匹配,监听器拒绝连接。

    java.sql.SQLException: Listener refused the connection with the following error:ORA-12505, TNS:liste ...

  8. JS BOM(浏览器对象)

    BOM即浏览器对象模型,它包括如下一些对象! (一)screen对象,Screen 对象中存放着有关显示浏览器屏幕的信息. 常见的属性有: availHeight:返回显示屏幕的高度 availWid ...

  9. myeclipse_2017_CI_8安装与破解

    一.下载myeclipse_2017_CI_8安装包与破解文件 二.安装myeclipse_2017_CI_8,安装完成后不要运行MyEclipse,将 "launch MyEclipse ...

  10. 关于js函数闭包的理解

    在开始之前我们先来了解一下函数的变量作用域 JavaScript 变量可以是局部变量或全局变量. 私有变量可以用到闭包. 全局变量 函数可以访问由函数内部定义的变量,如: 实例1 function m ...