簡體   English   中英

將csv導入mysql

[英]Importing csv to mysql

我在這個問題上看到了幾個問題,但沒有一個能夠幫助我。

這是我正在使用的腳本。

<?php  

//connect to the database 
$connect = mysql_connect("localhost","username","password"); 
mysql_select_db("mydatabase",$connect); //select the table 
// 

if ($_FILES[csv][size] > 0) { 

    //get the csv file 
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    //loop through the csv file and insert into database 
    do { 
        if ($data[0]) { 
            mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES 
                ( 
                    '".addslashes($data[0])."', 
                    '".addslashes($data[1])."', 
                    '".addslashes($data[2])."' 
                ) 
            "); 
        } 
    } while ($data = fgetcsv($handle,1000,",","'")); 
    // 

    //redirect 
    header('Location: import.php?success=1'); die; 

} 

?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Import a CSV File with PHP & MySQL</title> 
</head> 

<body> 

<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?> 

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
  Choose your file: <br /> 
  <input name="csv" type="file" id="csv" /> 
  <input type="submit" name="Submit" value="Submit" /> 
</form> 

</body> 
</html> 

它工作正常,但您無法定義標題行。

我想要做的是,如果可能的話,從第一行獲取每一列並使用它來定義項目將放在數據庫中的列。

所以我想將$data[0]拆分成csv文件中定義的每一列。 我嘗試過使用LOAD DATA LOCAL INFILE但由於某些原因它不能用於我。

您可能想先抓住第一行並從中創建列列表字符串:

<?php

if ($_FILES[csv][size] > 0) { 

    //get the csv file 
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    // get headers
    $columns = fgetcsv($handle,1000,",","'");
    $column_list = implode(",",$columns);

    //loop through the csv file and insert into database 
    while ($data = fgetcsv($handle,1000,",","'")) { 
        if ($data[0]) { 
        for ($i=0;$i<count($columns);$i++){
            $data[$i]="'".mysql_real_escape_string($data[$i])."'";
        }
        $values = implode(",",$data);

        $query = "INSERT INTO contacts ($column_list) ($values)";

        mysql_query($query);

        } 
    }

    //redirect 
    header('Location: import.php?success=1'); die; 

} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM