我正在上传mysql数据库中的批量数据需要1小时才能上传50000 md5
我想节省上传时间;
我使用(<input type='file' />)
答案 0 :(得分:0)
你可以试试这个例子
$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)'
;
缺少的列将被赋予其DEFAULT值,否则您可以这样指定固定值:
$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'
;
答案 1 :(得分:0)
我找到了问题的解决方案。 我通过动态查询在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);
}
}
?>
答案 2 :(得分:-1)
如果您使用PhpMyadmin,那么您可以尝试使用第一个选项,否则您可以使用“ BigDump: Staggered MySQL Dump Importer“导入大型和非常大的MySQL Dumps
第一个选项
当尝试使用phpmyadmin将大型SQL文件导入mysql时, phpmyadmin文档提供了一些解决方案,但我找到了 最简单的方法就是......
找到位于phpmyadmin目录中的config.inc.php文件。在 我的情况就在这里:
- C:\瓦帕\ APPS \ phpmyadmin3.2.0.1 \的config.inc.php
醇>在其上找到包含$ cfg ['UploadDir']的行并将其更新为:
- $ cfg ['UploadDir'] ='upload';
醇>在phpmyadmin目录中创建一个名为“upload”的目录。
- C:\瓦帕\ APPS \ phpmyadmin3.2.0.1 \上传\
醇>然后将您要导入的大型sql文件放入 新的上传目录。现在,当你进入db导入页面时 phpmyadmin控制台你会注意到一个没有的下拉礼物 之前 - 它包含上传中的所有sql文件 您刚刚创建的目录。您现在可以选择此选项 开始导入。
如果你没有在Windows上使用WAMP,那么我相信你能够 适应环境而不会有太多麻烦。