使用PHP将固定宽度的文本文件导入Mysql

时间:2010-10-06 19:16:40

标签: php mysql import

我正在尝试将带有文本文件的修复导入到Mysql表中。我正在寻找答案,但我的主要问题是我无法弄清楚我应该怎么做的逻辑。也许有人可以提供一些关于流程的提示:

步骤
1. fopen文件

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

2。使用feof转到文件末尾。分开每一行。 (我知道为什么,但是$ output line有效。

 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:如何设置子字符串来定义我的列]

1 个答案:

答案 0 :(得分:0)

固定宽度文件(具有单独的数据部分)最好用fscanf

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

然而,explode在'|'上让我觉得fgetcsv也可能有用,如果可行,MySQL中的LOAD DATA命令可能会完全跳过PHP。