【问题标题】:Import CSV file data into MySQL table [duplicate]将CSV文件数据导入MySQL表[重复]
【发布时间】:2014-12-31 09:50:23
【问题描述】:

我正在将 CSV 文件中的记录插入 MySQL 表;如果任何记录已经存在,则更新该记录并插入其他记录,如果记录不匹配,则插入所有记录。

这是我的代码

<?php
    $connect = mysql_connect('localhost','root','root');
    if (!$connect) {
     die('Could not connect to MySQL: ' . mysql_error());
    }
    $cid =mysql_select_db('bizin490_devcredit',$connect);
    define('CSV_PATH', '/home/ubc/Documents/');
    $csv_file = CSV_PATH . "test.csv";
    $csvfile  = fopen($csv_file, 'r');
    $theData  = fgets($csvfile);
    $i = 0;
    while (!feof($csvfile)) {

     $csv_data[] = fgets($csvfile, 1024);
     $csv_array  = explode(",", $csv_data[$i]);
     $insert_csv = array();
     $insert_csv['name']  = $csv_array[0];
     $insert_csv['email'] = $csv_array[1];

     $query = mysql_query("select name from test where name='" . $insert_csv['name'] . "'");
     $count = mysql_num_rows($query);

     if ($count == 0) {
      $query = "INSERT INTO test(name,email)VALUES('" . $insert_csv['name'] . "','" .  $insert_csv['email'] . "')";

      $n = mysql_query($query, $connect);

      } else {

        $sql = "update test set email='".$insert_csv['email']."'";
        //echo "<pre>";print_r($sql);
        $qu  = mysql_query($sql);
        echo "<pre>";print_r($_POST);
      }
     $i++;
     //die;
   }
   fclose($csvfile);
   echo "File data successfully imported to database!!";
   mysql_close($connect);
?>

【问题讨论】:

  • 你有什么问题???
  • 我的问题是,当它更新记录时,它会使更新的文件在数据库中停止
  • $insert_csv['email'] 可能为空
  • 是的,但是我如何传递值你可以在我的代码中看到。
  • 并且 LOAD DATA INFILE 通过[REPLACE | IGNORE]提供了该功能

标签: php mysql database csv


【解决方案1】:

类似:

LOAD DATA INFILE '/home/ubc/Documents/test.csv'
REPLACE
INTO TABLE `test`
(name, email)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多