0

先週、これについて何かを検索しましたが、何も見つかりませんでした。ドキュメントを調べましたが、ドキュメントでも何も機能しませんでした。

MySQLi を使用して、MySQL に数列だけアップロードする必要がある CSV (ダウンロードするには以下のリンク) があります。CSV は広告配信に使用しているプラ​​ットフォームのもので、クライアント名は変更されていますが、データはすべて 2 日間の実際のデータです。

これがアップロード用のコードです(SQLコマンドには3つの異なるバージョンがあり、約30の異なるバージョンを試しました):

<? 
(MY USER INFORMATION FOR MY MYSQL SERVER)
$ad_results = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);
ignore_user_abort(true);
set_time_limit(9999);

$sql1 =  "LOAD DATA INFILE 'CSV_FILE_FOR_STACKOVERFLOW.csv' INTO TABLE ad_info
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'  
(@col1,@col2,@col6,@col12,@col13,@col14) set client=@col2,impressions_delivered=@col12,date=@col1,impressions_booked=@col13,clicks=@col14,creative=@col6";

$sql2 = "LOAD XML INFILE '558385_20130815-153744.xml' INTO TABLE item ROWS IDENTIFIED BY '<row>'";

$sql3 = "LOAD DATA INFILE 'CSV_FILE_FOR_STACKOVERFLOW.csv' INTO TABLE ad_info
        FIELDS TERMINATED BY ','
        LINES TERMINATED BY '\n'
        IGNORE 1 LINES
        (@client, @name)
        set
          client = @client,
          impressions_delivered = @impressions_delivered,
          company_id = '1000001'";
mysqli_query($ad_results, $sql3);`
mysqli_close($ad_results)
?>

MySQL データベースは、特定の列だけを実行できない場合に備えて、CSV からのすべての列でセットアップされており、すべてのデータをアップロードしたいと考えています。おもしろいのは、毎日午前 1 時にこのコードを通過する 30 ~ 40 個の CSV ファイルがあることです。ダウンロード フォルダー内のすべての CSV を選択するコードがあり、それらを MySQL に挿入するコードが必要なだけです。ありがとう!(本当の答えで返信してください。どこでも検索しましたが、何も見つかりませんでした。常にエラーが発生するか、MySQLに行が挿入されません。最も近いのは、CSVを解析して使用することです

mysqli_query($ad_results, "INSERT INTO ad_info (...)VALUES(...)");

このファイルはサーバー上に存在し、cron ジョブは毎晩 PHP スクリプトを実行します。ユーザーによる中止は無視され、実行時間は 9999 秒です。(すべてのデータを確実に取得するため)。助けてくれてありがとう!

CSV ファイル: http://ad-results.com/CSV_FILE_FOR_STACKOVERFLOW.csv

4

1 に答える 1