【问题标题】:Separate CSV import fields in a query在查询中分隔 CSV 导入字段
【发布时间】:2012-05-08 11:36:12
【问题描述】:

我会将 csv 加载到 MySQL 并管理单个字段。原代码用自动VALUES('','$linemysql');上传内容。如何分隔字段?我想查询如下:

$sql = "INSERT IGNORE INTO `database`.`table` (`field1`,field2`, `field3`, `field4`, `field5`) VALUES(`csvfield1`,csvfield2`, `csvfield3`, `csvfield4`, `csvfield5`);";

这是因为我可以管理将包含哪一行

$lines = 0;
$queries = "";
$linearray = array();

$allLines = split($lineseparator,$csvcontent);
array_shift($allLines); // removes the 1st element

foreach($allLines as $line) {

$lines++;

$line = trim($line," \t");

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

/************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
************************************/
$line = str_replace("'","\'",$line);
/*************************************/

$linearray = explode($fieldseparator,$line);

$linemysql = implode("','",$linearray);

if($addauto)

/* Change This query VALUES('','$linemysql'); */

    $query = "INSERT IGNORE INTO `database`.`table` (`field1`,field2`, `field3`, `field4`, `field5`) VALUES('','$linemysql');";
            
else
    $query = "insert into $databasetable values('$linemysql');";

$queries .= $query . "\n";

【问题讨论】:

标签: php mysql csv


【解决方案1】:

使用 PHP 的内置 CSV 功能,包括 fgetcsv()。来自文档:

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

【讨论】:

    【解决方案2】:

    您可以像这样修改您的查询

    $query = "INSERT IGNORE INTO `database`.`table` (`field1`,field2`, `field3`, `field4`, `field5`) VALUES("'.$linemysql[0].'","'.$linemysql[1].'","'.$linemysql[2].'","'.$linemysql[3].'","'.$linemysql[4].'");";
    

    谢谢

    【讨论】:

    • 我认为是正确的但是报这个错误:Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
    猜你喜欢
    • 2021-08-16
    • 2013-10-16
    • 2011-06-16
    • 2022-01-15
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多