PHP程序,将csv转成sql文件并导入数据库
代码的由来
最近接手一个老项目,经过了多名程序员开发,因为公司不大,之前的交接做的也不好,很多业务逻辑都没有书面描述,一些需要功能还需要程序员手工处理,所以新员工的培训成本太高,且交接不方便,所以和业务商量了一下,对代码进行整合优化,本文就是其中的一小难点。
首先介绍一下我们的系统,这是一个俱乐部平台,用户是通过内部系统进行添加,我们的系统没有添加的权限和功能,然而大部分的业务却又在在我们的系统中进行,所以需要用户数据同步,但是上级系统出于安全考虑不提供实时接口,只是每天提供相关的excel,我们需要比对后存入数据库。
原始的处理流程
我们首先分别在两台电脑上将excel转成csv文件,然后移到另一台linux电脑用Python程序处理为sql文件,移到线上命令行导入数据库,在运行php进行比对更新。
很繁琐,且离不开程序员,而且局限性很大。因为Python版本的问题,首先放弃了原Python处理csv的部分,准备改为php处理。
那如何把数据读出来存入数据库
按照早期入门时编写习惯,对于csv的处理代码,编写如下:
<?php
echo date('Y-m-d H:i:s').'|store<br />';
set_time_limit(0);
$file_name = 'store.csv';
$file = fopen($file_name,'rb');
$mysql_url = 'localhost';
$mysql_user = 'root';
$mysql_password = '123456';
$con = mysql_connect($mysql_url,$mysql_user,$mysql_password) or die('数据库连接失败');
mysql_select_db('test_db', $con);
mysql_query('set names utf8');
while (($data = fgetcsv($file, filesize($file_name), ",")) !== FALSE)
{
foreach($data as $k2=>$v)
{
$data[$k2] = addslashes(trim(