我正在上传mysql数据库中的批量数据,上传50000 md5需要1个小时
我想节省上传时间;
我正在使用(<input type='file' />)通过csv文件上传数据
发布于 2013-11-21 16:10:34
你可以试一下这个例子。
$sql = 'LOAD DATA LOCAL INFILE "../csvtemp/test.csv"
INTO TABLE sample
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY """"
IGNORE 1 LINES
(col1, col2, col3, col4, col5, col6, col7, col8, col9)'
;缺少的列将被赋予其缺省值,或者您可以通过以下方式指定固定值:
$sql = 'LOAD DATA LOCAL INFILE "../csvtemp/test.csv"
INTO TABLE sample
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY """"
IGNORE 1 LINES
(col1, col2, col3, col4, col5, col6, col7, col8, col9)'
SET col10 = 'abc', col11 = 'xyz'
;发布于 2013-11-23 19:04:18
我找到了我的问题的答案。通过动态查询,实现了在mysql数据库中快速插入批量数据的功能
在开发此查询之前,我在1小时内插入了50000个md5,但在开发此查询后,它需要1-2秒。这是我的代码。
<?php
if(isset($_REQUEST['uploadinvalid'])) // button name
{
$file_name=$_FILES['file']['name'];
$temp=$_FILES['file']['tmp_name'];
$type=$_FILES["file"]["type"];
$error=$_FILES["file"]["error"];
$size=$_FILES["file"]["size"];
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
$server="localhost";
$user="root";
$password="vaibhav123";
$database="userinfo";
$cid=mysql_connect($server,$user,$password) or die("Try Again");
mysql_select_db($database,$cid);
$handle = fopen($_FILES['file']['tmp_name'], "r");
$fst="yes";
$query="insert into username (name) values "; // predefine query
$count=0; // counter for count how much values have been added
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$count++;
$name=md5(trim($data[0]));
if($fst=='yes') // check if fst== yes then don't use (,) comma
{
$fst="no";
$query.="('$name')"; // append value with predefine query if first time append don't use (,) comma
}
else
$query.=",('$name')"; // append value and use (,) comma
if($count==30000) //if counter==30000 query will execute
{
mysql_query($query,$cid);
$fst="yes"; //set fst=yes after execute query
$query=""; //set query="" after execute query
$count=0; //set count=0 after execute query
}
}
mysql_query($query,$cid); //execute query for remain values
mysql_close($cid);
}
}
?>发布于 2013-11-19 15:24:18
如果您使用的是PhpMyadmin,那么您可以尝试第一个选项,否则您可以使用“BigDump: Staggered MySQL Dump Importer”,这是导入大型和非常大型的MySQL转储
优先选项
在尝试使用phpmyadmin将大型SQL文件导入mysql时,phpmyadmin文档提供了一些解决方案,但我发现最简单的方法是…。
在phpmyadmin目录中找到config.inc.php文件。在我的例子中,它位于以下位置:
找到带有$cfg‘’UploadDir‘的行,并将其更新为:
在phpmyadmin目录中创建一个名为“upload”的目录。
然后将您尝试导入的大型sql文件放入新的上载目录中。现在,当你进入phpmyadmin控制台中的db导入页面时,你会注意到一个以前没有的下拉列表-它包含了你刚刚创建的上传目录中的所有sql文件。现在,您可以选择此选项并开始导入。
如果您没有在Windows上使用WAMP,那么我相信您将能够毫不费力地将其应用到您的环境中。
https://stackoverflow.com/questions/20065327
复制相似问题