首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php在MySQL中导入大型CSV文件

问使用php在MySQL中导入大型CSV文件
EN

Stack Overflow用户
提问于 2014-02-16 21:48:49
回答 2查看 4.3K关注 0票数 4

我正在尝试在CSV文件中导入60,000或更多行。该代码只能导入5000行。有人能帮我吗?

代码语言:javascript
复制
require_once('connection.php');

if ($_FILES[csv][size] > 0) {

    //get the csv file
    $file = $_FILES[csv][tmp_name];
    $handle = fopen($file,"r");

    //loop through the csv file and insert into database
    do {
        if ($data[0]) {
            mysql_query("INSERT INTO transactions (EntryId_Pk, AccessCode, MobileNumber, TelcoCode, TIN, ORNo, ORAmt, NumOfEntries, ECN, AddedOn) VALUES
                (
                    '".addslashes($data[0])."',
                    '".addslashes($data[1])."',
                    '".addslashes($data[2])."',
                    '".addslashes($data[3])."',
                    '".addslashes($data[4])."',
                    '".addslashes($data[5])."',
                    '".addslashes($data[6])."',
                    '".addslashes($data[7])."',
                    '".addslashes($data[8])."',
                    '".addslashes($data[9])."'
                )
            ");
        }
    } while ($data = fgetcsv($handle,1000,",","'"));
EN

回答 2

Stack Overflow用户

发布于 2014-02-16 21:58:54

您可能希望使用LOAD DATA MySQL语句。这可能真的很快,因为您不需要将所有内容都读入PHP-land,并让MySQL聪明地处理分配。你可以在PHP中像这样使用它:

代码语言:javascript
复制
// dont use mysql_* anymore in new code
mysqli_query($dblink, '
    LOAD DATA LOCAL INFILE "'.$file.'"
        INTO TABLE transactions
        FIELDS TERMINATED by ","
        OPTIONALLY ENCLOSED BY "\'"
        LINES TERMINATED BY "\n"
');
票数 4
EN

Stack Overflow用户

发布于 2014-02-16 22:23:40

可能是超时错误。尝试设置

代码语言:javascript
复制
set_time_limit(0);

在查询中分块导入数据并插入多行,而不是逐行执行,这也是一种很好的做法。

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

https://stackoverflow.com/questions/21812020

复制
相关文章

相似问题

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