Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php csv到mysql的顺序相反_Php_Mysql_Csv - Fatal编程技术网

Php csv到mysql的顺序相反

Php csv到mysql的顺序相反,php,mysql,csv,Php,Mysql,Csv,我有一个CSV文件,其中包含来自另一个来源的多个条目,大约1000个条目。不幸的是,它的生成方式将最新的事务放在第一位。我想将数据附加到mysql中,但顺序不对。我该如何解决这个问题? 我所能想到的唯一方法是将它写入一个临时表,即按日期ASC进行查询,然后插入回正确的表中。有更好的办法吗 $location = $_SERVER['DOCUMENT_ROOT'] ."/assets/csv/"; $year = trim(date('Y', strtotime($start)));

我有一个CSV文件,其中包含来自另一个来源的多个条目,大约1000个条目。不幸的是,它的生成方式将最新的事务放在第一位。我想将数据附加到mysql中,但顺序不对。我该如何解决这个问题? 我所能想到的唯一方法是将它写入一个临时表,即按日期ASC进行查询,然后插入回正确的表中。有更好的办法吗

   $location = $_SERVER['DOCUMENT_ROOT'] ."/assets/csv/";
    $year = trim(date('Y', strtotime($start)));
    $month = trim(date('m', strtotime($start))-1);
    $day = trim(date('d', strtotime($start)));

    $file = "http://ichart.yahoo.com/table.csv?s=". $symbol ."&a=". $month ."&b=". $day ."&c=". $year;
    $row = 1;
    if (($handle = fopen($file, "r")) !== FALSE)
    {
        $fp = fopen($location . $symbol.'.csv', 'w');
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
        {
            $num = count($data);
            if($row == 1){array_unshift($data,"Symbol"); }
            else  { array_unshift($data, $symbol); }
            fputcsv($fp, $data);
            $row++;
        }
        fclose($fp);
        fclose($handle);

这就是我如何获取CSV文件的方法

数据库中的行的顺序永远不重要,因为您不能依赖于此。检索时使用order by子句。什么@Ilion--关系模式应该与存储顺序无关。为什么您关心事务的存储顺序?我想我关心的唯一原因是出于习惯。如果数据块不在同一顺序中,这不是一个问题吗?顺便说一句,在这种情况下,IMHO使用staging(temp)表与顺序无关是有益的。这是一种在插入事实表之前清理和验证数据的方便方法。您还可以考虑使用解析和加载CSV文件中的数据。