1. php如何對CSV大文件進行讀取並導入資料庫
fgetcsv 可以讀取fopen打開的文件,並讀取一行,
這樣可以防止文件太大而內存溢出
然後每讀取一定行數,入庫一次,
2. thinkphp裡面導入csv數據出現亂碼怎麼破
php讀取csv文件,在windows上出現中文讀取不到的情況,本人立馬想到一個函數mb_convert_encoding();作如下設置 $str = mb_convert_encoding($str, "UTF-8", "GBK");然後就可以了。當然你也可以用iconv();作如下設置iconv(『GBK』,」UTF-8//TRANSLIT//IGNORE」,$str);這兩個函數來解決在windows上面發生亂碼的問題。
3. thinkphp怎麼把csv文件導入到網頁
str = 「您好hello」;
echo strlen($str);
11 strlen() 函數返回字元串的長度這樣導入,詳細的後盾人有,樓主感興趣可以看看
4. php如何讀取CSV大文件並且將其導入資料庫示例
思路:
讀取csv文件,每讀取一行數據,就插入資料庫
示例
文件夾結構
/
file.csv//csv大文件,這里只模擬三行數據,不考慮運行效率(PS:csv文件格式很簡單,文件一般較小,解析很快,運行效率的瓶頸主要在寫入資料庫操作)
index.php//php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
*讀取csv文件,每讀取一行數據,就插入資料庫
*/
//獲取資料庫實例
$dsn='mysql:dbname=test;host=127.0.0.1';
$user='root';
$password='';
try{
$db=newPDO($dsn,$user,$password);
}catch(PDOException$e){
echo'Connectionfailed:'.$e->getMessage();
}
//讀取file.csv文件
if(($handle=fopen("file.csv","r"))!==FALSE){
while(($row=fgetcsv($handle,1000,","))!==FALSE){
//寫入資料庫
$sth=$db->prepare('insertintotestsetname=:name,age=:age');
$sth->bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth->bindParam(':age',$row[1],PDO::PARAM_INT);
$sth->execute();
}
fclose($handle);
}
數據表
CREATETABLE`test`(
`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,
`name`VARCHAR(255)NULLDEFAULT''COLLATE'utf8mb4_bin',
`age`INT(10)NULLDEFAULT'0',
PRIMARYKEY(`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
運行結束後,資料庫中會插入csv中的三行數據
5. php 寫入數據到csv中,不覆蓋原有數據,以新增行插入如何實現
這個跟fputcsv無關,而主要的關鍵在於你打開文件的模式,你需要使用 a 或是 a+ 模式打開文件。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
$fp = fopen('file.csv', 'a+');
foreach($stu as $data);
{
fputcsv($fp,$data); //每次寫入一組數據到csv文件中的一行
}
6. phpadmin怎麼導入cvs文件
phpmyadmin 導入 csv 的用戶界面如下圖:
以下是相關的注意事項及說明:
1、關於 CSV 和 CSV using LOAD DATA
這兩種都可以導入CSV格式的文件數據,區別在於:當文件比較大時用 CSV 可能 script 會超時,這時就得使用 LOAD DATA。
2、列名
列名就是你在導出時打鉤的「將欄位名稱放在首行」,實際就是用分隔符分開的欄位名集合,就是填寫所有欄位名,中間用分隔欄位的字元隔開。
3、Ignore plicate rows
這個選項的作用是忽略相同的行,意為相同的行只導入一行數據。4、轉義欄位的字元是指數據裡面可能含有特殊字元串,如分隔欄位的字元、包裹欄位的字元還有SQL保留字元,這些得先轉義否則會出錯,按默認的設置是沒什麼問題的。
7. 三種辦法,1,PHP 如何處理上傳的CSV文件
可以用fgetcsv函數: -- 從文件指針中讀入一行並解析 CSV 欄位
但他無法處理里邊的中文; 所以在上傳後,要先把csv轉一下編碼;
8. 我用php的fgetcsv將csv導入mysql,用NOW()導入時間,提示Fatal error: Call to undefined function NOW()
('". NOW()."',' NOW() 比如要放在 引號里,他是mysql的函數,你如果放在引號外面,php就認為 NOW() 是一個 php 的函數,而實際上,php 沒有這個函數,你自己又沒有定義這么一個函數,當然會提示 Call to undefined function NOW() (意思就是未定義的函數)
9. php導入csv文件輸出是亂碼,怎麼解決
//這是我前幾天回答過的一個問題下面以讀取淘寶csv文件為例
if($result){//如果上傳成功了,這是文件路徑
if(!($handle=fopen_utf8($result,"r"))===FALSE){//調取下邊函數fopen_utf8;
$errorArr=array();
$i=0;
while(($cols=fgetcsv($handle,1000," "))!==FALSE){
++$i;
if($i<4)continue;
$taobaolmsx=$cols[21];//寶貝屬性;
$taobaoxxsx=$cols[30];//銷售屬性;
$goodsBn=$cols[33];//商家編碼;
}
fclose($handle);
}
unlink($result);
}else{
echo'fileuploaderror';exit;
}
/*讀取csv文件用*/
functionfopen_utf8($filename){
$encoding='';
$handle=fopen($filename,'r');
$bom=fread($handle,2);
rewind($handle);
if($bom===chr(0xff).chr(0xfe)||$bom===chr(0xfe).chr(0xff)){
//UTF16ByteOrderMarkpresent
$encoding='UTF-16';
}else{
$file_sample=fread($handle,1000)+'e';//readfirst1000bytes
//+eisaworkaroundformb_stringbug
rewind($handle);
$encoding=mb_detect_encoding($file_sample,'UTF-8,UTF-7,ASCII,EUC-JP,SJIS,eucJP-win,SJIS-win,JIS,ISO-2022-JP');
}
if($encoding){
stream_filter_append($handle,'convert.iconv.'.$encoding.'/UTF-8');
}
return($handle);
}
10. 我在網上找了一個導入csv文件 php的報錯Fatal error: Call to undefined function input_csv() in
這個意思就是說你的input_csc()這個方法沒有定義,你在網上找的,這個方法肯定是人家封裝好的,只是給了你關鍵代碼,並不是全部代碼