如何使用 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 数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 php 中使用 exec 命令运行 codeigniter 控制器功能
如何将 codeigniter 与 Sql Server 2012 连接?
CodeIgniter - 如何在项目中加载 stripe-php 库?