在php中保存mysql数据库中的文件数据


save file data in mysql database in php

我有一个CSV文件包含118350行,我想保存在我的数据库表中的每一行,我已经在数组中读取整个文件并解析每一行进行一些修改,我已经开始在我的数据库中保存文件内容,我有一个PHP程序,但问题是它一次只保存927行,所以我必须一次又一次地运行我的PHP脚本以保存数据库中的进一步数据。

我的PHP代码是——

<?php
    $connection = mysql_connect('localhost', 'user', 'password') or die(mysql_error($connection));
    $select_db = mysql_select_db('dbname', $connection) or die(mysql_error($connection));
    $file = file('ip-to-country.csv');
    $data = str_replace("'"", "", $file, $j); //for removing ' " ' charactor from string
    $i = 0;
    for ($i = 0; $i < count($data); $i++) {
        $content = explode(',', $data[$i]);
        $ins = "insert into iplocation (startiprang,endiprang,concode,concode3,country) values ($content[0],$content[1],'$content[2]','$content[3]','$content[4]')";
        $result = mysql_query($ins, $connection);
    }
    echo "done";
?>

是否存在一个函数可以不受限制地将所有文件数据存储在数组中。我的文件大小约为6mb .提前感谢.......我希望你能理解我想要什么……

如果你使用这个csv

http://ip-to-country.webhosting.info/node/view/6

你可以这样做:

create table iplocation (
id int not null auto_increment primary key,
startiprang int unsigned,
endiprang int unsigned,
concode varchar(50),
concode3 varchar(50),
country varchar(150)
) engine = myisam;
load data infile 'c:/ip-to-country.csv'
into table iplocation 
fields terminated by ',"'
(@startiprang,@endiprang,@concode,@concode3,@country)
set 
startiprang = replace(@startiprang,'"',''),
endiprang = replace(@endiprang,'"',''),
concode = replace(@concode,'"',''),
concode3 = replace(@concode3,'"',''),
country = replace(@country,'"','')

实际上这不是PHP的问题。使用mySQL中的LOAD DATA命令可以很容易地解决这个问题。它看起来像:

LOAD DATA INFILE LOCAL ''var'tmp'test.csv' INTO TABLE sometable FIELD TERMINATED BY ';' LINES TERMINATED BY ''n' (column1, column2);

但是如果你真的想用PHP解决这个问题,那就创建一个SQL文件,在每个CSV行中插入命令,然后用mySQL客户端执行它。