Php 单列CSV到两列MySql表数据存储

Php 单列CSV到两列MySql表数据存储,php,mysql,sorting,csv,Php,Mysql,Sorting,Csv,我有一个csv文件,在一列中包含2000个数据。数据格式如下所示: name 100/1 name 100/2 name 105/6 ... 因此,一般的格式是“text integer\u one/integer\u two”,现在我希望它存储在一个包含2列的mysql数据库表中。列_1应具有数据整数_1,列_2应具有数据整数_2 如何使用php将数据推送到mysql中 看看preg_match,您应该能够使用一个相当简单的正则表达式获得这些值,如: preg_match(/\w+\s*

我有一个csv文件,在一列中包含2000个数据。数据格式如下所示:

name 100/1
name 100/2
name 105/6 
 ...
因此,一般的格式是“text integer\u one/integer\u two”,现在我希望它存储在一个包含2列的mysql数据库表中。列_1应具有数据整数_1,列_2应具有数据整数_2


如何使用php将数据推送到mysql中

看看preg_match,您应该能够使用一个相当简单的正则表达式获得这些值,如:

preg_match(/\w+\s*(\d+)\\\/(\d+)/, $row, $matches);

var_dump($matches);
要从文件中提取数据,请查看
fgets
,这里有一个逐行读取文件的示例,以获取上面代码中的
$row
变量

然后可以使用INSERT语句将每一行写入数据库

需要考虑的一些事项:

这个文件有多大? 您需要多久插入一次此数据?是一次性的吗

这些因素将影响您如何构建代码;大容量插入数据有多种方法,如果这只是一次性运行,那么我建议使用
sed
或类似方法手动上传文本数据,然后使用所选数据库的本机方法进行大容量插入(对于mysql,请参阅
LOAD data infire
,或在客户端使用
\.
选项)

如果文件很大,需要定期插入内容,请查看使用准备好的语句和/或多重插入语法:

INSERT INTO mytable (name, number, anothernumber) VALUES('paul', 1, 2),('bob',2,1)

使用ph function函数读取csv文件(本页给出了示例),然后使用函数对每个in循环进行解析,并从中创建查询并保存到数据库中。首先,从提取值开始。如果所有数据都像示例中那样格式化,则可以使用简单的
分解

$lines = explode(",", $data); // $data should be your file extracted into a string
foreach ($lines as $line) {
    $temp = explode(" ", $line);
    $name = $temp[0];
    $temp_2 = explode("/", $temp[1]);
    $integer_1 = $temp_2[0];
    $integer_2 = $temp_2[1];

    $query = "INSERT INTO table_two_columns SET name = '{$name}', integer_1 = '{$integer_1}', integer_2 = '{$integer_2}'";
}
这就是我对你的问题的看法。

看看处理文件的and或php函数,使用它们你应该能够循环遍历cvs文件的行,如果你可以控制你的服务器配置,我建议你看看,因为你可以更高效/优雅地处理文件,和面向对象。但需要您启用SPL。最后一个是我的建议,因为您可以这样阅读文件:

function random_name(){
            $file_name = "names.csv";
            if(is_readable($file_name)){
                $file = new SplFileObject($file_name);


                $file->seek($file->getSize());
                $linesTotal = $file->key();

                $file->seek(rand(1,$linesTotal-1));
                $line = $file->fgetcsv();

                return $line[4];
            }
        }
$array[0] or $array[1] to get the value
这是我的一个示例脚本,用于从1000个名称的cvs文件中获取随机名称

当您循环并获取文件信息时,您可以使用此函数通过您定义的分隔符分隔字符串,在您的情况下,它将是:

$array = explode("/", $myLine);
您可以这样访问:

function random_name(){
            $file_name = "names.csv";
            if(is_readable($file_name)){
                $file = new SplFileObject($file_name);


                $file->seek($file->getSize());
                $linesTotal = $file->key();

                $file->seek(rand(1,$linesTotal-1));
                $line = $file->fgetcsv();

                return $line[4];
            }
        }
$array[0] or $array[1] to get the value

MySQL可以直接导入CSV,还具有正则表达式功能。它可以完全由MySQL处理。作为起点=>