簡體   English   中英

使用php將csv文件導入數據庫

[英]Import csv file into Database using php

我正在嘗試將csv文件導入數據庫而不定義任何行,因為在頁面加載時它將自動進行-

$file = '../csv/file.csv';
$table = 'table_name';

// get structure from csv and insert db
ini_set('auto_detect_line_endings',TRUE);
$handle = fopen($file,'r');
// first row, structure
if ( ($data = fgetcsv($handle) ) === FALSE ) {
    echo "Cannot read from csv $file";die();
}
$fields = array();
$field_count = 0;
for($i=0;$i<count($data); $i++) {
    $f = strtolower(trim($data[$i]));
    if ($f) {
        // normalize the field name, strip to 20 chars if too long
        $f = substr(preg_replace ('/[^0-9a-z]/', '_', $f), 0, 255);
        $field_count++;
        $fields[] = $f.' VARCHAR(255)';
    }
}

$sql = "CREATE TABLE $table (" . implode(', ', $fields) . ')';

$conn->query($sql);
while ( ($data = fgetcsv($handle) ) !== FALSE ) {
    $fields = array();
    for($i=0;$i<$field_count; $i++) {
        $fields[] = '\''.addslashes($data[$i]).'\'';
    }
   $sql = "Insert into $table values(" . implode(', ', $fields) . ')';

   $conn->query($sql);

}
fclose($handle);
ini_set('auto_detect_line_endings',FALSE);

如果我將其回顯,它將在頁面中加載數據,並且它正確地創建了表,只是沒有將數據加載到表中,而我找不到原因。

謝謝!

更新

這是我回顯$ sql時得到的第一行-

Insert into 1001_inventory values('New', '581613', '88888888888888888', '2016', 'Toyota')

因此,我發現varchar(255)對於某些字段來說太小了,因此我對其進行了擴展並解決了問題,感謝所有幫助!

暫無
暫無

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

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