Home > Backend Development > PHP Tutorial > PHP读取TXT文件插入数据库

PHP读取TXT文件插入数据库

WBOY
Release: 2016-06-23 14:04:51
Original
1014 people have browsed it

有一个TXT文件,大概300多MB,想要PHP读取出来,然后分条插入到数据库,应该怎么做呢,TXT文件格式大概是这样的。应该怎么样做呢

wangli # 20100203 # 李四
liwsi # 2015544 # xiaofen
wangli # 20100203 # 李四
liwsi # 2015544 # xiaofen
wangli # 20100203 # 李四
liwsi # 2015544 # xiaofen
wangli # 20100203 # 李四
liwsi # 2015544 # xiaofen
wangli # 20100203 # 李四
liwsi # 2015544 # xiaofen
wangli # 20100203 # 李四
liwsi # 2015544 # xiaofen


这是我自己写的,但是只是可以读取出并且显示除了,不知道怎么插入数据库,而且TXT文件里面本来是有换行的,但是PHP读取出来都么有换行,还有一个问题就是如果用fread($data,1000)这个地方的是1000是指读取1000个字符,那如果需要一行一行的读取呢。现在这个TXT是一行一行这样的,如果说1000个字符这样子,那有可能最后只是读取到半行

<?php$data='11.txt';$files=fopen($data,"r");$res=fread($files,100000);echo $res.'<br>';
Copy after login


回复讨论(解决方案)

$data = '11.txt';$fp = fopen($data, 'r');while($r = fgets($fp)) {  $t = join("','", explode(' # ', $r));  $sql = "insert into 表 values ('$t')";  //.... 执行sql}
Copy after login


不过对于 mysql 似乎应该用 LOAD DATA INFILE 指令来完成

PHP code?1234567$data = '11.txt';$fp = fopen($data, 'r');while($r = fgets($fp)) { $t = join("','", explode(' # ', $r)); $sql = "insert into 表 values ('$t')"; //.... 执行sql}

不过对于 mysq……

我按照你的这个,然后打开这个页面,直接不显示,空白的~

$data = '11.txt';$fp = fopen($data, 'r');while($r = fgets($fp)) { echo $t = join("','", explode(' # ', $r));  //$sql = "insert into 表 values ('$t')";  //.... 执行sql}
Copy after login




# 是不用插入到数据库里面的,另外如果这个文件很大,怎么分割呢

怎么样输出到PHP一行一行来显示呢,TXT默认换行是\n,这样的,PHP怎么匹配出来

你的数据不是按行按列(" # ")做值得吗?
只有你提供正确的数据和需求,才有可能得到可行的处理方案

$filename="11.txt";$fps=fopen($filename,'r');while(!feof($fps)){$ceshi=fgets($fps);echo $ceshi."<br>";}fclose($fps);
Copy after login


谢谢版主,我是按照这样的,然后浏览器输出以后就是和TXT文本一样显示出来了,但是如果要插入到数据库里面应该怎么做呢

我数据库里面有四个字段,id,name,time,bak

第一个是ID是auto_increment
其余三个字段都是varchar
现在TXT文件是格式是  
lisi # 121015 # 3900
xiaomao # 130205 #2500
lisa # 1258 # ok
我想插入到数据里面以后的数据是这样的
id    name     time    bak
1    lisi     121015   3900
2    xiaomao  130205   2500
3    lisa     1258     ok




我没有弄错,列分隔符是“ # ”,即 # 号两边各有一个空格(真难为你了,不嫌烦吗?)
补上字段列表,为
$t = join("','", explode(' # ', $r));
$sql = "insert into 表 ( name, time, bak) values ('$t')";

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template