❶ php Excel大批量導入崩潰怎麼辦
項目需要批量導入excel文件,如果裡面有重復的數據要怎麼處理呢?每插入一次數據都要到資料庫查詢么?
回復內容:
項目需要批量導入excel文件,如果裡面有重復的數據要怎麼處理呢?每插入一次數據都要到資料庫查詢么?
1、如果裡面有重復的數據要怎麼處理呢?
1
<code>可以先判斷資料庫是否有該數據。</code>
2、每插入一次數據都要到資料庫查詢么
1
<code>是的。</code>
先去重得到沒有重復的數據,再批量插入資料庫。也可以嘗試MYSQL中的insert ignore into或 replace into
如果查詢比較慢,對不能重復的欄位加唯一鍵,然後用INSERT IGNORE INTO
php批量導入數據出錯
我現在要做的是,把一個產品數據從EXCEL中導入到PHP的MYSQL中,導入的過程中,總是會提示「Allowed memory size of 167772160 bytes exhausted (tried to allocate 689919 bytes) in D:\wamp\www\Company\proct\admin\uploadOrder.php on line 167」這個錯誤,然後我分成第100條導入時,就不會提示這個錯誤,這個是不是內存溢出,有沒有好的解決方法呢?
------解決方案--------------------
php.ini中講memory_limit選項設置大一點,然後重啟apache或nginx就行了
------解決方案--------------------
文件太大了,這樣的話可以用source命令直接導入!
------解決方案--------------------
❷ php批量導入數據如何去重復
你好,這是我解決你這個問題的思路,希望能幫到你:比如你是根據a欄位設置唯一,在每次插入之前就使用下一條需要插入的值去數據表裡面查詢,如果查詢到了就跳出當前循環,下次循環繼續(continue),希望能幫到你!
❸ Thinkphp怎麼批量添加數據
ThinkPHP,Model類有定義addAll()來實現批量添加數據
從2.1版開始恢復了批量插入數據的addAll方法(僅針對Mysql資料庫)
假設數據:(批量添加數據都是二維數組)
$data[0]=array('name'=>'張三','sex'=>'1');
$data[1]=array('name'=>'李四','sex'=>'2');
$data[2]=array('name'=>'王五','sex'=>'1');
比如像User表寫入批量數據
D('User')->addAll($data);
此操作後,資料庫內就生成三條數據
❹ 如何通過PHP將excel的數據導入MySQL中
在開發PHP程序時,很多時候我們會有將數據批量導入資料庫的需求,如學生信息批量添加到資料庫中,而事先用excel編排好,對excel實行操作,便是我們比較常用的選擇方式。
在對excel的操作中,phpExcelReade便是很多人的共同選擇。在具體實現中,我們可以以文件上傳方式將excel文件上傳到伺服器中的某個位置,通過以下操作將excel中的數據導入到資料庫後,在將上傳的文件刪除即可。
代碼如下:
$dir=dirname(__FILE__);//獲取當前腳本的絕對路徑
$dir=str_replace(「//」,」/」,$dir).」/」;
$filename=』uploadFile.xls';//可以定義一個上傳後的文件名稱
$result=move_uploaded_file($_FILES[『upload』][『tmp_name』],$dir.$filename);//假如上傳到當前目錄下
if($result)//如果上傳文件成功,就執行導入excel操作
{
require_once『phpExcelReader/Excel/reader.php';
$data=newSpreadsheet_Excel_Reader();
$data->setOutputEncoding(『utf-8′);//設置在頁面中輸出的編碼方式,而不是utf8
//該方法會自動判斷上傳的文件格式,不符合要求會顯示錯誤提示信息(錯誤提示信息在該方法內部)。
$data->read(「$filename」);//讀取上傳到當前目錄下名叫$filename的文件
error_reporting(E_ALL^E_NOTICE);
//如果excel表帶標題,則從$i=2開始,去掉excel表中的標題部分(要將$i<=改為$i<否則會插入一條多餘的空數據)
for($i=2;$i<$data->sheets[0][『numRows』];$i++)
{
$sql=「INSERTINTOuser(stuid,class,name,sex,classNum,tel,addr,remark)VALUES(『」.
$data->sheets[0][『cells』][$i][1].」『,'」.//學號
$data->sheets[0][『cells』][$i][2].」『,'」.//班級
$data->sheets[0][『cells』][$i][3].」『,'」.//姓名
$data->sheets[0][『cells』][$i][4].」『,'」.//性別
$data->sheets[0][『cells』][$i][5].」『,'」.//班內序號
$data->sheets[0][『cells』][$i][6].」『,'」.//聯系電話
$data->sheets[0][『cells』][$i][7].」『,'」.//聯系地址
$data->sheets[0][『cells』][$i][8].」『)」;//附註
$db->query($sql);
$insert_info.=」$sql</br>/n」;//可以用來顯示數據插入的信息
}
$totalNums=$data->sheets[0][『numRows』]-2;//求出導入的總數據條數(這里是減去2,才會得到去除標題後的總數據)
//echo「導入成功!」;
unlink(「$filename」);//刪除上傳的excel文件
}
else
{
$errmsg=」上傳失敗」;
}
❺ PHP編程:有沒有辦法把txt文件批量導入mysql資料庫.
首先10000txt文件要起一個有規律的名稱。例如按數字大小。這樣便於循環。
如果不是這樣,也可以做,但是要遍歷目錄,判斷文件。
$file_name_arr = scandir(文件目錄);//遍歷文件
unset($file_name_arr[0]);
unset($file_name_arr[1]);
$file_name_arr = array_values($file_name_arr);
foreach($file_name_arr as $file_name){
if(is_file(路徑/$file_name){
$str_arr = get_txt(文件地址);
//把數據插入資料庫,記得在把內容向表裡插的時候要加addslashes(),$str_arr[0]就是標題,$str_arr[1]就是內容
}
}
function get_txt($file){
$str = file_get_contents($file);
$str_arr = preg_split('|\n|',$str);
return $str_arr;
}
建議把10000個文件分成多份執行,避免資料庫跑死