代码:
<?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. 后盾网lavarel视频项目---4、lavarel和vue都是{{}}表示变量,如何解决冲突

    后盾网lavarel视频项目---4.lavarel和vue都是{{}}表示变量,如何解决冲突 一.总结 一句话总结: @{{videos}}:@符号表示lavarel不处理:textarea nam ...

  2. JAVA TCP Socket

    服务器端   package com.Pong.tcpip; import java.io.BufferedReader; import java.io.IOException; import jav ...

  3. Cross-Multimedia dataset

    Wikipedia: http://www.svcl.ucsd.edu/projects/crossmodal/ PKU Xmedia: https://github.com/yeqinglee/mv ...

  4. 【DVWA】File Upload(文件上传漏洞)通关教程

    日期:2019-08-01 17:28:33 更新: 作者:Bay0net 介绍: 0x01. 漏洞介绍 在渗透测试过程中,能够快速获取服务器权限的一个办法. 如果开发者对上传的内容过滤的不严,那么就 ...

  5. pcap中不同包功能

    1.不同包协议的功能 EAPoL:基于局域网的扩展认证协议 ICMPv6:(一般是四个连在一起)互联网控制协议第六套 DHCP Discover:请求分配IP DHCP Offer:你的IP是***, ...

  6. P2951 【[USACO09OPEN]捉迷藏Hide and Seek】

    典型的最短路,而且只要再加一点点操作,就能得到答案 所以可以直接套模板 具体看程序:: #include<cstdio> #include<queue>//队列专属头文件 #i ...

  7. CF The World Is Just a Programming Task (Easy Version)【分析·思维】

    题目传送门 题意: 给定一个括号序列,随意交换两个位置的括号之后,问有多少个不同长度的圈.关于圈的定义大概就是:将括号序列的后$k$个数放到括号序列的最前面,就是长度为$k$的圈.(看了好久题意emm ...

  8. 【VS开发】【智能语音处理】语音信号处理之(四)梅尔频率倒谱系数(MFCC)

    语音信号处理之(四)梅尔频率倒谱系数(MFCC) zouxy09@qq.com http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要 ...

  9. vue2.X + HTML5 plus 拍照和调用设备相册 另附 图片转base64和压缩图片方法

    HTML5 部分 <button @click="tesCamera()" type="button" :disabled="isshStatu ...

  10. 引用dll出现了黄色感叹号

    今天引用一个dll的时候出现了一个小感叹号,重新生成也无济于事,如下图 原因是,被引用的项目使用的是.NET2.0版本,而当前项目使用的是.NET3.5版本,所以出现了错误 解决办法把当前项目和引用项 ...