数据库
首页 > 数据库> > PHP – 将csv导入数据库数据的时间过长

PHP – 将csv导入数据库数据的时间过长

作者:互联网

我正在尝试上传CSV文件以使用php将记录保存到数据库中.我使用了sql方法LOAD DATA INFILE,但它无论如何都没有用.

Index.php的格式为< input name ='csv'type ='file'id ='csv'/>.

我的文件上传有5个字符串列和2个整数(最后一个),而且它只有两行,标题和值.

它们是’usuarios’数据库中的字段NOT NULL.
所以这就是问题所在,当我尝试添加一条记录时(例如:’bea’),就说了

…..(sooo long)……K8docProps/app.xmlPK Data too long for column ‘NombreUsuario’ at row 1

是的,readfile显示,所以我改变了每一列的细节(我不认为这是问题)并且放置值VARCHAR(200)/ INTEGER(200),不管它不会让我放更长的因为我尝试指定密钥太长;最大密钥长度为767字节.

这是我的代码,我用其他例子做了:

subirCSV.php


    require ('../cabses.php');
    require ('../conecta.php');
    if (isset($_POST['submit'])) {
        if (is_uploaded_file($_FILES['csv']['tmp_name'])) {
            echo "File ". $_FILES['csv']['name'] ." uploaded successfully.";
            echo "Displaying contents:";
            readfile($_FILES['csv']['tmp_name']);
        }
        $handle = fopen($_FILES['csv']['tmp_name'], "r");
        $flag = true;
        while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
            if($flag) { $flag = false; continue; }
            $import="INSERT INTO usuarios (NombreUsuario,PassUsuario,EmailUsuario,Nombre,Apellidos,IdPropietario,IdRol) VALUES 
                            (
                                '".trim($data[0], '"')."',
                                '".trim($data[1], '"')."', 
                                '".trim($data[2], '"')."',
                                '".trim($data[3], '"')."',
                                '".trim($data[4], '"')."', 
                                '".trim($data[5], '"')."',
                                '".trim($data[6], '"')."'
                            )
                        ";
            $oConni->query($import) or die(mysqli_error($oConni)."____________".$import);
        }
        fclose($handle);
        print "Import done";
    } else {
        print "Not working";
    }

也许它是针对UTF-8编码的?

这是我在StackOverFlow中的第一个问题,所以来自西班牙的大家好!谢谢你!

解决方法:

好吧,我终于完成了!首先,我意识到分离器是;并使用addslashes($data [0])工作正常.

您可以使用我的代码并尝试它.


    require ('../conecta.php');
    if (isset($_POST['submit'])) {
            if (is_uploaded_file($_FILES['csv']['tmp_name'])) {
                $handle = fopen($_FILES['csv']['tmp_name'], "r");
                $flag = true;
                while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
                    if($flag) { $flag = false; continue; }
                    $sql="INSERT INTO usuarios (NombreUsuario,PassUsuario,EmailUsuario,Nombre,Apellidos,IdPropietario,IdRol) VALUES 
                                    (
                                        '".addslashes($data[0])."',
                                        '".addslashes(md5($data[1]))."',
                                        '".addslashes($data[2])."',
                                        '".addslashes($data[3])."',
                                        '".addslashes($data[4])."',
                                        '".addslashes($data[5])."',
                                        '".addslashes($data[6])."'
                                    )
                                ";
                    $oConni->query($sql);
                }
                fclose($handle);
                header('Location:../index.php');
            } else {
                print "No funciona";
            }
    }

标签:php,file,mysql,csv,fgetcsv
来源: https://codeday.me/bug/20190628/1319414.html