2014-02-14 112 views
1

我想導入一個CSV文件到MySql數據庫和它的工作除了一件事 - 其中一個字段來自一個自由格式的文本字段,它會導致問題時用戶輸入逗號。然而,「在這個字段中的數據的開頭和結尾處,我正在使用下面的代碼來嘗試將其更改爲空字段,但我無法實現它 - 我必須錯過某些東西並盯着這幾個小時直心不是幫助在此先感謝!問題與導入CSV使用PHP由於逗號字符串

代碼:。

<?php 
    require('phpsqlajax_dbinfo.php'); 
    $databasehost = $db_host; 
    $databasename = $db_name; 
    $databasetable = "tbl_csvImport"; 
    $databaseusername=$db_user; 
    $databasepassword = $db_pass; 
    $fieldseparator = ","; 
    $lineseparator = "\n"; 
    $csvfile = "doecsv.csv"; 

    if(!file_exists($csvfile)) { 
     die("File not found. Make sure you specified the correct path."); 
    } 

    try { 
     $pdo = new PDO("mysql:host=$databasehost;dbname=$databasename", 
      $databaseusername, $databasepassword, 
      array(
       PDO::MYSQL_ATTR_LOCAL_INFILE => true, 
       PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
      ) 
     ); 
    } catch (PDOException $e) { 
     die("database connection failed: ".$e->getMessage()); 
    } 

    $affectedRows = $pdo->exec(" 
     LOAD DATA LOCAL INFILE ".preg_replace('/"[^"]+"/','',$pdo->quote($csvfile))." INTO TABLE `$databasetable` 
     FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)." 
     LINES TERMINATED BY ".$pdo->quote($lineseparator)) 

?> 

回答

1

你需要告訴MySQL的字段可以用引號括起來

LOAD DATA LOCAL INFILE 'yourFile.csv' INTO TABLE `yourTable` 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
+0

PERFECT謝謝!你!! – ProfessionalAmateur

+0

不客氣:-) –

相關問題