【问题标题】:Import CSV file to Mysql Database in PHP在 PHP 中将 CSV 文件导入 Mysql 数据库
【发布时间】:2017-01-21 18:18:25
【问题描述】:

我尝试使用 LOAD DATA LOCAL INFILE 从另一台服务器导入 csv 文件,但它给了我一个错误 The user update failed: Can't find file,即使该文件存在于给定的路径中。我也试过LOAD DATA INFILEUser access denied

有没有其他方法可以将csv文件直接导入mysql数据库中的文件路径(不使用任何提交按钮),如果有新的csv文件上传,则删除dbase表中的当前数据?

编辑:我也尝试了这个 PHP 脚本,在没有任何按钮的情况下导入 csv 文件,但是 csv 文件数据没有导入

PHP(第二个代码):

$mysqli = new mysqli("localhost", "user", "password", "dbasename");
$file = "/var/www/html/files/filename.csv";
$handle = fopen($file,'r');
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE){
     $num = count($data);
     for ($c=0; $c < $num; $c++){
         $col[$c] = $data[$c];
     }

     $col1 = $data[0];
     $col2 = $data[1];
     $col3 = $data[2];
     $col4 = $data[3];
     $col5 = $data[4];

     // SQL Query to insert data into DataBase
     $query = "INSERT INTO dbname.tablename(col1,col2,col3,col4,col5) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."')";
     $mysqli->query($query);
}
fclose($handle);

这是 PHP:

$sql = "LOAD DATA LOCAL INFILE 'filename.csv'
       INTO TABLE dbname.tablename
       FIELDS TERMINATED BY ','
       OPTIONALLY ENCLOSED BY '\"' 
       LINES TERMINATED BY '\n' 
       IGNORE 1 LINES;";

$con=mysqli_connect("localhost","user","password","db");
// Check connection
if (mysqli_connect_errno()){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
};

$result = mysqli_query($con, $sql);

if (mysqli_affected_rows($con) == 1){
  $message = "The data was successfully added!";
} else {
  $message = "The user update failed: ";
  $message .= mysqli_error($con); 
};

echo $message;

【问题讨论】:

  • @e4c5,我不是要导出数据,而是要将其导入 mysql 数据库。我不这是重复的

标签: php mysql csv import upload


【解决方案1】:

你也可以试试

$con=mysqli_connect("localhost","user","password","db");
$file = fopen("filename.csv","r");
while ($data = fgetcsv ($file)){
     print_r($data);
     $sql = 'insert into ...'
     $result = mysqli_query($con, $sql);
}

导入 csv 文件

【讨论】:

    【解决方案2】:

    <?php 
    	$connect = mysqli_connect("localhost", "root", "", "testing");
    	if(isset($_POST["submit"]))
    {
    	if($_FILES['file']['name'])
    	{
    		$filename = explode(".", $_FILES['file']['name']);
    		if($filename[1] == 'csv')
    		{
    			$handle = fopen($_FILES['file']['tmp_name'], "r");
    			while($data = fgetcsv($handle))
    			{
    				$item1 = mysqli_real_escape_string($connect, $data[0]);  
    				$item2 = mysqli_real_escape_string($connect, $data[1]);
    				$query = "INSERT into excel(excel_name, excel_phone) values('$item1','$item2')";
    				mysqli_query($connect, $query);
    			}
    			fclose($handle);
    			echo "<script>alert('Import done');</script>";
    		}
    	}
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>  
    	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
    	<style>
    		table{
    			border-collapse: collapse;
    			width: 100%;
    			color: #588c7e;
    			font-family: monospace;
    			font-size: 25px;
    			text-align: left;
    		}
    		th{
    			background-color: #588c7e;
    			color: white;
    		}
    		tr:nth-child(even) {background-color: #f2f2f2}
    	</style>
    </head>
    <body>
    	<form method="post" enctype="multipart/form-data">
    		<div align="center">
    			<label>Select CSV File:</label>
    			<input type="file" name="file" />
    			<br />
    			<input type="submit" name="submit" value="Import" class="btn btn-info" />
    		</div>
    	</form><br><br>
      </body>
      </html>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 2019-02-21
      相关资源
      最近更新 更多