导入具有可变文件名的csv文件

时间:2017-01-30 15:54:54

标签: php sql csv import

我的供应商每天都会发送订单状态的更新,并在我的sql db中导入一个可变的静态文件名。我的cronjob有以下代码:

<?php
require('cron_config.php');

// Open and parse the sales.csv file
$fh = fopen("../files/out/orderstatus.csv", "r");

while ($line = fgetcsv($fh, 1000, ","))
{
    $order_id = $line[0];
    $order_status_id = $line[1];
    $date_modified = $line[2];

    // Insert the data into the sales table
    $query = "UPDATE oc_order o SET order_status_id='$order_status_id',
        date_modified='$date_modified' WHERE order_id = '$order_id'";

    $result = $mysqli->query($query);
}

fclose($fh);
$mysqli->close();
?>

在我的代码中,您会看到静态文件名&#34; orderstatus.csv&#34;。将来我会收到一个动态文件名(例如:orderstatus _&#34; order_id&#34; .csv。如何用我的代码识别这个文件?命名的order_id已经是sql_query的一部分了。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

做得好的家伙们。使用glob()和unlink()完成了这项工作。代码如下:

import subprocess

# if the script don't need output.
subprocess.call(["php", "/path/to/your/script.php"])

# if you want output
proc = subprocess.Popen("php /path/to/your/script.php", shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()

答案 1 :(得分:0)

为什么不搜索它:

$result = array_filter(array_map(
       function($a){ 
          return strpos($a,'orderstatus_')===0?$a:null;          
       }
       ,scandir('../files/out/'))); 

结果数组仅保存文件夹中以orderstatus_开头的所有文件。