1

爆発を使用してcsvファイルをMySQLテーブルにインポートしてフィールドを分離するスクリプトがあります。csv ファイルの最後のフィールドは日時フィールドですが、下の画像のように形式が正しくありません。 ここに画像の説明を入力

以下のコードを使用して csv を MySQL に挿入し、最後の列の形式を mm/dd/yyyy hh:mm:ss am/pm から MySQL 形式の yyyy-mm-dd hh:mm:ss に変更したいと考えています。

既存の作業スクリプト (形式が間違っているため、日時フィールドをインポートしません):

$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "LoadsOverWB.csv";
foreach(split($lineseparator,$csvcontent) as $line) {

    $lines++;

    $line = trim($line," \t");

    $line = str_replace("\r","",$line);

    /************************************
    This line escapes the special character. remove it if entries are already escaped in the csv file
    ************************************/
    $line = str_replace("'","\'",$line);
    /*************************************/

    $linearray = explode($fieldseparator,$line);

    $linemysql = implode("','",$linearray);

    if($addauto)
        $query = "replace into $databasetable(loadnumber,weighbillnumber,VehicleRegistration,haulier,vehicleweight,rolledproductkg,hegrosskg,roofinhkg,nonmetalkg,wbtotalkg,datetime) values('','$linemysql');";
    else
        $query = "replace into $databasetable(loadnumber,weighbillnumber,VehicleRegistration,haulier,vehicleweight,rolledproductkg,hegrosskg,roofinhkg,nonmetalkg,wbtotalkg,datetime) values('$linemysql');";

    $queries .= $query . "\n";

    @mysql_query($query);
}

いつもありがとうございます。

4

2 に答える 2

1

まず、fgetcsv()を確認する必要があります。各行を配列に入れて、それをはるかにうまく処理できるようになります。

そして、あなたの質問に答えるには、日付をフォーマットする必要があります。

$date = $linearray['date']; // or what key your date has
$date = date('Y-M-d H:i:s', strtotime($date));
于 2013-01-17T08:09:40.937 に答える
1

爆発後に2行追加するだけです

$key    =   count($linearray);
$linearray[$key - 1]    =   date('Y-m-d H:i:s',strtotime($linearray[$key - 1]));

$linemysql = implode("','",$linearray);

また、print_r 結果を挿入する前に、フォーマットが変更されたかどうかを確認します。

編集:

使用しているライブラリを見ると、各行の最後のインデックスが日付列 (TIME OVER WEB) であると想定しています。だから私は配列の長さを数えています.1は私に最後のインデックスを与えるので、PHPの日付関数を適用しています. date('format',strtotime(datevalue)) strtotime は、指定された文字列を 32431234 のような数値に変換し、date 関数は 2 つのパラメーターを受け取ります。形式と数。理解していただければ十分だと思います。

于 2013-01-17T08:08:51.763 に答える