2010-10-06 89 views
0

我试图将带有文本文件的固定文件导入到Mysql表中。我正在四处寻找答案,但我的主要问题是我无法弄清楚我应该怎么做的逻辑。也许有人可以提供对过程中的一些提示:使用PHP将固定宽度的文本文件导入到Mysql

步骤
文件

$file_handle = fopen("thefile.txt", "r"); 

2.使用feof转到文件的末尾。分隔每一行。 (我知道知道为什么,但$输出线工程

while (!feof($file_handle)) { 
$line_of_text = fgets($file_handle); 
$lines = explode('|', $line_of_text); 
$output = $lines[0] . $lines[1]. "<BR>"; 

所有这一切工作正常,它读取固定宽度的文件,并显示其所有,因为它应该 - 。逐行但是怎么办我设置的列之前,我将它导入到MySQL

我想,也许做这样的事情可能做的伎俩,以确定正确的列:?

echo substr($output,0,5); 
echo substr($output,5,10); 
echo substr($output,16,5); 

但是,这并不工作基本上可有人。概述我需要经历的步骤?我不是在寻求解决方案,但是现在,我确实需要解决方案当我不知道下一步应该采取何种措施时,甚至不知道谷歌应该怎么做。

对不起,这里有一个完整的初学者问题,但任何帮助将非常感激。

感谢

特里

[我不是100%确定如何导入到MySQL要么,但我想了这么多钱的出路。 IE:如何设置子串来定义我的专栏]

回答

0

固定宽度的文件(有数据的单独部分)与fscanf

while($data=fscanf("%5s%10s%5s\n",$file_handle)){ 
    var_dump($data); 
} 

然而,explode荷兰国际集团上最好的处理“|”让我觉得fgetcsv也可能工作,如果这样做的话,在MySQL中的LOAD DATA命令可能完全跳过PHP。

+0

fgetcsv为固定宽度?我只使用'|'因为我在教程中发现它 - 任何工作(=,*,等等......任何东西)。 – saltcod 2010-10-06 20:03:46

+0

Nah,'fgetcsv'用于分隔数据,不是固定宽度。事实上,你在'|'上爆炸让我觉得可能有分隔符让生活更愉快。 – Wrikken 2010-10-06 20:09:14

相关问题