如何使用 PHP CodeIgniter 将 CSV 数据导入 MYSQL 数据库?

Posted

技术标签:

【中文标题】如何使用 PHP CodeIgniter 将 CSV 数据导入 MYSQL 数据库?【英文标题】:How to import CSV Data into MYSQL database using PHP CodeIgniter? 【发布时间】:2015-12-10 00:43:03 【问题描述】:

您好,我已经看到了整个堆栈,但找不到任何适合我的问题的答案。答案是关于如何读取 csv 格式而不是导入 mysql 数据库。

我有一个上传控制器,可以将我的文件上传到我的服务器上。现在我希望将上传的文件导入 MYSQL 数据库。请帮帮我。

控制器文件:

public function upload_it() 
    //load the helper
    $this->load->helper('form');

    //Configure
    //set the path where the files uploaded will be copied. NOTE if using linux, set the folder to permission 777
    $config['upload_path'] = 'application/views/uploads/';

// set the filter image types
    $config['allowed_types'] = 'gif|csv';

    //load the upload library
    $this->load->library('upload', $config);

$this->upload->initialize($config);

$this->upload->set_allowed_types('*');

    $data['upload_data'] = '';

    //if not successful, set the error message
    if (!$this->upload->do_upload('userfile')) 
    
        $data = array('msg' => $this->upload->display_errors());

     
    else
     

            //else, set the success message
            $data = array('msg' => "Upload success!");

            $data['upload_data'] = $this->upload->data();   

            if($_POST)
            
                 if (($_FILES[csv][size] > 0 ) && ( $_FILES[csv][type]=="text/csv") ) 
                
                        //get the csv file 
                        $file = $_FILES[csv][tmp_name]; 
                        $filetype=$_FILES[csv][type];
                        $handle = fopen($file, "r");
                        $i = 0;
                        $temp=str_getcsv($handle,"\n");
                        error_log("===$temp==");


                        $data = $this->user_m->('sip_id', 'sip_pass', 'name', 'key', 'email', 'password', 'phone', 'status', 'created', 'balance');


                        //Dont Know what to do next. 



                

            










    

    //load the view/upload.php
    $this->load->view('admin/user/upload', $data);


现在我认为应该创建一个模型来导入这个上传的文件。但是我不知道该怎么做

编辑:

我知道如何在 php 中执行此操作以连接到 mysql:

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error)  
die("Connection failed: " . $conn->connect_error); 
 
echo "Connected successfully"; 
?>

【问题讨论】:

你是什么意思读但不导入?您的意思是您没有发现任何可以读取 csv 并将数据导入表的内容? @Drew 看到我看到了一个答案,显示了 csv 的内容。但我希望当我上传文件时,它的数据会动态导入数据库 几乎就像照片导入,上传,我的意思是,然后是导入 @Drew 我将它上传到服务器然后我希望 csv 数据在我的数据库中。看到我有用户表,所以我希望管理员可以将 csv 数据导入 mysql 并可以一次创建多个用户 而且它肯定需要从上传开始,因为它比他更容易,比如说,只是运行一个 cron 作业或其他什么?这家伙毕竟是管理员,但你想要一个可爱的界面 【参考方案1】:

好的,正如您通过聊天告诉我的,您可以通过 exec 调用 php 文件,而 CI 原始 sql 对您来说是新的(相信我,我根本不知道 CI )。 ...

正如您所说,文件名将从中获知,让我们称其为带有表单的 php 文件,并且该文件已经上传到某个已知层次结构中的 view 文件夹,然后考虑以下字符串:

LOAD DATA INFILE '/full/path/to/view/myfile.txt' 
INTO TABLE users  
    FIELDS TERMINATED BY ',' 
           OPTIONALLY ENCLOSED BY '"'
    LINES  TERMINATED BY '\n'

是的,这将是 php 中的一个大字符串。所以它就像任何其他字符串一样,就像一个选择语句。在您与mysqli 连接后(正如您向我展示的那样,我编辑了问题),然后执行它!

如果进入 PHP $_POST 的文件名需要连接到上面的蓝色块中,那么这就是需要发生的事情。文件名后的单引号很关键,相信我。

来自Load Data 的手册页

【讨论】:

以上是关于如何使用 PHP CodeIgniter 将 CSV 数据导入 MYSQL 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用codeigniter将csv文件导入mysql

如何在 php 中使用 exec 命令运行 codeigniter 控制器功能

如何将 codeigniter 与 Sql Server 2012 连接?

CodeIgniter - 如何在项目中加载 stripe-php 库?

PHP,Codeigniter:如何在Web应用程序中根据用户时区/位置设置日期/时间?

CodeIgniter / PHP:如何在 .php 视图页面中获取 URI