php将csv导入sql数据库

时间:2010-12-28 09:28:40

标签: php sql csv

这是错误的,当我从csv文件中回显一行并将任何内容连接到行的末尾时,它不会显示,而是所有行都被回显,并且连接的字符串仅显示在最后一次,这是某种缓冲的东西,不会让我从我的csv文件串起来的东西,它在我的本地wamp服务器上运行,我在我的expload函数中尝试了不同的行分隔符,我确定文件只在行的末尾使用\ n

我试图逐行解析一个csv文件,这样我就可以在使用它构建一个sql语句并将其插入我的数据库之前检查它的内容。

$file = fopen($filename, "r")  
$filesize = filesize($filename);
$filecontent = fread($file, $filesize);
fclose($file); 

$rows = explode("\n", trim($filecontent)); 
foreach ($rows as $row) 
{
    echo $row . '<br />';
} 

2 个答案:

答案 0 :(得分:2)

您正在按字符串\n拆分字符串。除非实际字符串“\ n”出现在文件中的任何位置,否则这可能无效。你可能意味着"\n"double quotes),这使得它成为一个实际的换行符。

但是你的整个过程非常低效。您应该使用fgetcsv并逐行处理文件,而不是一次性将其读入内存。

$handle = fopen('test.csv', 'r');
while (($row = fgetcsv($handle)) !== false) {
    foreach ($row as $field) {
        echo $field . '<br />';
    }
}
fclose($handle);

答案 1 :(得分:0)

使用fgetcsv()函数将CSV文件转换为数组:

$csvFile = "test.csv";
$csvSeparator = ",";
$csvFileLength = filesize($csvFile);

$handle = fopen($csvFile, "r");
    $csvData = fgetcsv($handle, $csvFileLength, $csvSeparator);
fclose($handle);

转储数据以显示结构:

var_dump($csvData);

现在您可以将数据转换为在数据库中使用。