【问题标题】:How to Practically Split Values from CSV File into MySQL Database如何将 CSV 文件中的值实际拆分到 MySQL 数据库中
【发布时间】:2011-03-04 18:52:37
【问题描述】:

假设我在 CSV 文件中有以下行(我在此示例中删除了标题行):

"500,000",2,50,2,90000

我有一个 PHP 脚本读取 CSV 文件,将文件分成单独的行,并将每一行存储在一个名为 $linearray 的数组中。然后,我使用 foreach 循环单独查看每一行。

在 foreach 循环中,我使用以下函数将行分成单独的变量:

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

从这里,我将值插入到 MySQL 数据库中的单独列中。该脚本有效。这些值被插入到数据库中,但我遇到了问题。我要:

"500,000"  |  2  |  50  |  2  |  90000

但我明白了:

"500  |  000"  |  2  |  50  |  2  |  90000

脚本不够聪明,无法理解它应该跳过引号内的逗号。您知道如何更改脚本以确保获得所需的输出吗?

【问题讨论】:

    标签: php mysql regex csv


    【解决方案1】:

    你可以使用str_getcsv函数

    print_r(str_getcsv($line));

    输出:

    Array
    (
        [0] => 500,000
        [1] => 2
        [2] => 50
        [3] => 2
        [4] => 90000
    )
    

    类似于fgetcsv(),此函数将字符串解析为其输入,而fgetcsv() 将文件作为其输入。

    【讨论】:

    • 请注意 str_getcsv 仅适用于 PHP 5.3 及更高版本。对于早期版本,将字符串“保存”到 php://memory 特殊文件并使用 fgetcsv 对其进行解析。并不是说 str_getcsv 与这个问题真的相关,因为 OP 专门有一个文件,所以一次读取一行可能是有意义的。
    • @Emil 是的,我只是向他展示了一个使用他已经拥有的 $line 变量的示例。在底部我说明了他应该为 csv 文件做什么。
    【解决方案2】:

    试试fgetcsv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 2015-01-09
      相关资源
      最近更新 更多