PHP从服务器导入CSV到SQL数据库

时间:2015-07-01 23:58:15

标签: php mysql csv server

我在google或这里找不到有关我的问题的任何有用信息。

目前,我正在使用cronjob将URL文件从URL存储到我的服务器,每小时使用file_get_contents();一次。

现在,每当用户加载页面时,都会执行几个步骤,但是从那里开始都是PHP和Javascript,因此加载带有最终结果(html表)的页面大约需要9秒,如here所述

我想通过将存储在我服务器上的CSV文件导入SQL数据库来改变它,但我不知道如何实现这一点。尝试使用PHP将其转换为数组,然后将其存储到像here这样的数据库,但它对我不起作用。你会如何处理这个问题?

谢谢,Innerwolf。

文件如下:

用户名,得分,numWins,numKills,numKillsWallshot,numDeaths,numShots,highestSpree,timePlayed

/ \ SSA,14104,26,2113,0,867,28083,15,43695

“∀ЈAIIX”,10166,18,2641,0,1291,34201,14,59346

我尝试了这个新的cron

<?php

function download_remote_file($file_url, $save_to)
            {
                $content = file_get_contents($file_url);
                file_put_contents($save_to, $content);
            }
            download_remote_file(//link', realpath(".//path") . '/dump.csv');

            if(!function_exists('str_getcsv')) {     ------|
                //define str_getcsv                        |until now, cron
                }                                          |job executes 
            }                                              |part above.
            $url = '//path/dump.csv';                      |
            $csvData = file_get_contents($url);            |this part was in
            $lines = explode(PHP_EOL, $csvData);           |index.htm before
            $array = array();                              |and gets exe-
            foreach ($lines as $line) {                    |cuted when
            $line = str_replace("\\", "&#92;", $line);     |reload
            $line = str_replace("#", "&#35;", $line);      |
            $array[] = str_getcsv($line);                  |
            }                                        ------|

            $fields = implode(', ', array_shift($array));
            $values = array();
foreach ($array as $rowValues) {
    foreach ($rowValues as $key => $rowValue) {
         $rowValues[$key] = mysql_real_escape_string($rowValues[$key]);
    }

    $values[] = "(" . implode(', ', $rowValues) . ")";
}


//mySQL connection values


// Create connection
$conn = new mysqli($mysql_host, $mysql_user, $mysql_password, $mysql_database);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$query = "INSERT INTO ranking ($fields) VALUES " . implode (', ', $values);

if ($conn->query($query) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $query . "<br>" . $conn->error;
}

$conn->close();
?>

0 个答案:

没有答案