php - 将 CSV 文件写入 SQL

标签 php mysql csv

希望有人能帮助我解决我认为会是次要的问题(我还在学习......)。我正在尝试将基于 SQL 数据库的 CSV 文件服务器的全部内容写入此处,这是我目前拥有的代码。线路// out 完美写入并生成新记录。 $ar0值不会在名为 order 的表中生成任何条目 - 即使 csv 文件长约 100 行,我也只是得到

Error: INSERT INTO order (Picker,Order_Number,Timestamp,System)values ('','','','')

$file = "Pal.ORD.csv"; 
$tbl = "order"; 


$f_pointer=fopen("$file","r"); // file pointer

while(! feof($f_pointer)){
$ar=fgetcsv($f_pointer);
//$sql="INSERT INTO `order` (Picker,Order_Number,Timestamp,System)values ('Me','9999','23-01-2015','ORD')";
$sql="INSERT INTO `order` (Picker,Order_Number,Timestamp,System)values ('$ar[0]','$ar[1]','$ar[2]','$ar[3]')";

echo $sql;
echo "<br>";
}


if ($connect->query($sql) === TRUE) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

最佳答案

我认为可能发生的情况是您的文件可能有一个空行/回车作为文件的最后一行,并使用它来插入数据作为空白条目。

我不能 100% 确定这一点,因为您没有提供 CSV 文件的样本,但这是我的测试所揭示的。

基于以下 CSV 测试模型:(旁注:空白行将被忽略)

a1,a2,a3,a4
b1,b2,b3,b4
c1,c2,c3,c4

使用以下内容并替换为您自己的凭据。

这将根据我在上面提供的模型为给定文件中找到的每一行创建一个新条目/行。

<?php 
$DB_HOST = 'xxx';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';

$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($db->connect_errno > 0) {
  die('Connection failed [' . $db->connect_error . ']');
}

$file = "Pal.ORD.csv";
$delimiter = ',';
if (($handle = fopen("$file", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
        foreach($data as $i => $content) {
            $data[$i] = $db->real_escape_string($content);
        }
        // echo $data[$i].""; // test only not required
        $db->query("INSERT INTO `order` 
                      (Picker, Order_Number, Timestamp, System)
                      VALUES ('" . implode("','", $data) . "');");
    }
    fclose($handle);
}

if($db){
echo "Success";
}

else {
    echo "Error: " . $db->error;
}

关于php - 将 CSV 文件写入 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28121194/

相关文章:

javascript - 如何将php文件中定义的ID标签包含到html文件中?

php - bind_param 错误,其中提供了正确数量的参数?

javascript - 使用 AJAX 从 Javascript 运行整个 PHP 文件

php - get_the_content 无法在短代码中工作

php - 为什么我的页面中的 AJAX 请求只能运行一次

php - 在单独的行中返回查询结果

php - 具有 concats 和 Joins 的 SQL 在 MySQL 5.1 中工作正常,但在 5.5 上返回 NULL

ios - 试图将 txt 文件的内容解析为 Swift 中的字典

python - 如何在 python 中编辑 .csv 以进行 NLP

java - OpenCSV 不转义引号 (")