我試圖編寫一個cron作業,該作業將運行一個php腳本,該腳本將從固定列的平面(文本)文件中插入數據。php mysql從固定寬度的文本文件插入表
我的文件 '的data.txt' 看起來就像這樣:
first_column second_column third_column
EG。第一列的寬度爲30個字符+ 1個與下一列分隔的空間,第二個20個字符+ 1個分隔空間,第三個15個(包括空格)。我的桌子'TEST'有3列:第一,第二和第三。
問題是,如何先修整列數據,然後將每行插入表中?
<?php
// initial database stuff
$host = 'localhost';
$user = 'username';
$pass = 'password';
$db = 'database';
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
mysql_select_db($db) or die ("Unable to select database!");
$file = file('/home/user/files/data.txt'); # read file into array
$count = count($file);
if($count > 0) # file is not empty
{
$query = "INSERT into TEST(first,second,third) values";
$i = 1;
foreach($file as $row)
{
$query .= "('TRIM(SUBSTR($row,1,30))','TRIM(SUBSTR($row,32,20))','TRIM(SUBSTR($row,34,49))')";
$query .= $i < $count ? ',':'';
$i++;
}
mysql_query($query) or die(mysql_error());
}
echo "File data successfully imported to database!!";
?>
在將它們放入Query之前,可能先將它們修剪成PHP? –
如果我是你,我會用PHP做所有不好的工作,而不是MySQL。 –