2016-02-22 95 views
0

我試圖用這個代碼導入csv文件到我的MySQL數據庫:錯誤導入CSV到MySQL和PHP

... 感謝解決這個問題! ....

我在做什麼錯?


夥計們,我可以解決了這個問題,但現在......我有其他的問題,這是現在的代碼:

<?php 
$databasehost = "localhost"; 
$databasename = "cauctti"; 
$databasetable = "sample"; 
$databaseusername="root"; 
$databasepassword = "toor"; 
$fieldseparator = ";"; 
$lineseparator = "\r|n"; 
$csvfile = "Reporting.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, 
      PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" 
     ) 
    ); 
} catch (PDOException $e) { 
    die("database connection failed: ".$e->getMessage()); 
} 

$affectedRows = $pdo->exec(" 
     LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable` 
     FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)." 
     LINES TERMINATED BY ".$pdo->quote($lineseparator)); 

echo "Loaded a total of $affectedRows records from this csv file.\n"; 

?> 

當我嘗試運行它,只能插入一行在桌子上...

從此csv文件加載共1條記錄。

,當我的CSV文件有一個像5.000條目爲什麼只得到一個行...

+1

有你的答案了,我想: http://stackoverflow.com/questions/26256421/sql-load -data-infile-utf8-issue – RR404

+0

您應該添加CHARACTER SET UTF8;到您的查詢。 – Matheno

+0

Matheno我在哪裏需要添加它? –

回答

0

由於發現here

您應該設置CHARACTER SET UTF8在您的查詢。

例子:

0

這裏看看 - >Here

<?php 
$table = "tableName"; 
$fileName = "States.csv"; 
$ignoreFirstRow = 1; 
if (($handle = fopen($fileName, "r")) !== FALSE){ 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
{ 
if($ignoreFirstRow != 1){ 
$sql = "insert into ".$table." values("; 
$sql .= '"'.implode('","',$data).'"'; 
echo "".$sql.');'; 
$sql = ""; 
} 
$ignoreFirstRow++; 
} 
fclose($handle); 
} 
?>