首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传Mysql数据库中的批量数据

问上传Mysql数据库中的批量数据
EN

Stack Overflow用户
提问于 2013-11-19 15:09:53
回答 3查看 2.6K关注 0票数 0

我正在上传mysql数据库中的批量数据,上传50000 md5需要1个小时

我想节省上传时间;

我正在使用(<input type='file' />)通过csv文件上传数据

EN

回答 3

Stack Overflow用户

发布于 2013-11-21 16:10:34

参考链接Mysql CSV load infile

你可以试一下这个例子。

代码语言:javascript
复制
$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)'
;

缺少的列将被赋予其缺省值,或者您可以通过以下方式指定固定值:

代码语言:javascript
复制
$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'
;
票数 0
EN

Stack Overflow用户

发布于 2013-11-23 19:04:18

我找到了我的问题的答案。通过动态查询,实现了在mysql数据库中快速插入批量数据的功能

在开发此查询之前,我在1小时内插入了50000个md5,但在开发此查询后,它需要1-2秒。这是我的代码。

代码语言:javascript
复制
 <?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);
}
}
?>
票数 0
EN

Stack Overflow用户

发布于 2013-11-19 15:24:18

如果您使用的是PhpMyadmin,那么您可以尝试第一个选项,否则您可以使用“BigDump: Staggered MySQL Dump Importer”,这是导入大型和非常大型的MySQL转储

优先选项

在尝试使用phpmyadmin将大型SQL文件导入mysql时,phpmyadmin文档提供了一些解决方案,但我发现最简单的方法是…。

在phpmyadmin目录中找到config.inc.php文件。在我的例子中,它位于以下位置:

  1. C:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php

找到带有$cfg‘’UploadDir‘的行,并将其更新为:

  1. $cfg'UploadDir‘= 'upload';

在phpmyadmin目录中创建一个名为“upload”的目录。

  1. C:\wamp\apps\phpmyadmin3.2.0.1\upload\

然后将您尝试导入的大型sql文件放入新的上载目录中。现在,当你进入phpmyadmin控制台中的db导入页面时,你会注意到一个以前没有的下拉列表-它包含了你刚刚创建的上传目录中的所有sql文件。现在,您可以选择此选项并开始导入。

如果您没有在Windows上使用WAMP,那么我相信您将能够毫不费力地将其应用到您的环境中。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20065327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档