![](/img/trans.png)
[英]importing selected columns of csv file in different sql tables using php
[英]Importing CSV file into SQL using PHP not working
我正在嘗試將CSV
文件導入我的SQL
數據庫。 這就是我所擁有的:
if ($_FILES[csvFile][size] > 0)
{
$file = $_FILES[csvFile][tmp_name];
$handle = fopen($file,"r");
do {
if ($data[0])
{
$insert_query = "REPLACE INTO `teacherNames` SET
`schoolName` = '".addslashes($schoolname)."',
`teacherName` = '".addslashes($data[0])."'
;";
$result = mysql_query($insert_query);
echo $insert_query; -- SEE RESULTING QUERY BELOW
echo $data[0]." added\n<br />";
}
}
while ($data = fgetcsv($handle,1000,",","'"));
CSV
文件有3條記錄,它看起來正確。 該過程在一定程度上可以正常工作,但是由於某種原因,它無法正確讀取CSV
文件,並且結果查詢如下:
REPLACE INTO `teacherNames` SET `schoolName` = 'Brooks', `teacherName` = 'RMG JMC PMC';
當我希望得到3個單獨的查詢時-每個記錄一個。 它似乎不是以3個單獨的記錄的形式讀取CSV
文件,而是以1的形式讀取。有人可以看到原因嗎?
更新:
CSV內容為:
RMG
JMC
PMC
如果文件與MySQL服務器位於同一台計算機上,則Julio Martins的解決方案會更好。
但是,如果您需要從PHP內部讀取文件,請訪問http://php.net/manual/en/function.fgetcsv.php ,了解來自PHP.NET的說明:
注意:如果在Macintosh計算機上或由Macintosh計算機讀取文件時,PHP無法正確識別行尾,則啟用auto_detect_line_endings運行時配置選項可能有助於解決問題。
文件的行尾如何? 由於所有行都被讀為一,所以我想這可能是您的情況。
要打開auto_detect_line_endings,請使用ini_set("auto_detect_line_endings", true);
如開心果在http://php.net/manual/en/filesystem.configuration.php#107333中所說
使用while代替do-while:
while ($data = fgetcsv($handle,1000,",","'")) {
//...
}
嘗試加載數據:
LOAD DATA INFILE '{$filepath}'
INTO TABLE '{$table}'
FIELDS TERMINATED BY ','
比較干凈
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.