如何将多个.text文件中的数据传输到mysql中

时间:2013-08-04 11:03:20

标签: php mysql

我有关于将数据从.txt文件传输到我的数据库的问题。我有10个.txt文件,并希望将其所有数据传输到我的数据库。下面的代码是我到目前为止仅针对一个.txt文件尝试的内容。它给出错误。当用户点击上传时,我将zip文件上传到文件夹上传的服务器。执行此操作的代码如下:

if(isset($_FILES['zip'])){
    $errors = array();

    $zip = new ZipArchive();

    if(strtolower(end(explode('.', $_FILES['zip']['name'])))!=='zip'){
        $errors[] = 'That does not look like a .zip file.';
    }

    if($_FILES['zip']['size']>104857600){
        $errors[] = 'There is a size limit of 100MB';
    }

    if($zip->open($_FILES['zip']['tmp_name'])==false){
        $errors[]='Failed to open zip file.';
    }

    if(empty($errors)){
        $extracted_files = array();

        for($i=0;$i<$zip->numFiles;$i++){
            $entry_info = $zip->statIndex($i);

            $extracted_files[] = $entry_info['name'];
        }

        print_r($extracted_files);

        $zip->extractTo('./uploads');
        $zip->close();
    }
}

上传zip文件并提取它们。现在我想从.txt文件中读取数据并填充我的数据库。下面的代码是我所拥有但我得到错误,特别是对于文件所在的路径。如果有人可以请求帮助我下面的代码,以及帮助文件路径或建议我把文件放在另一个地方。代码如下:

$string = file_get_contents("set_1.txt","r");
$myFile = "/Applications/MAMP/bin/mamp/uploads";
$fh = fOpen($myFile,'w') or die("could not open: " . mysql_error());
fwrite($fh, $string);
fclose($fh);

$sql = mysql_connect("localhost", "root","root");
if(!$sql){
    die("could not connect: " . mysql_error());
}

mysql_select_db("Tweet_Corpora");
$result = mysql_query("LOAD DATA INFILE '$myfile'" . " INTO TABLE Display FIELDS TERMINATED BY '/\s+/'");

if(!$result){
    die("could not load. " . mysql_error());
}

我的表格如下:

| id | tweet_id | raw_tweet | normalized_tweet |

我只需要填写列tweet_id和raw_tweet

我的数据在每个文件中如下所示:

57587072533413889   @NAYDIVAA1 thought I saw u today u know
57743998223265792   The art of sleeping in the early morning and waking up at tea time.
57817604059959296   RT @dilleeeey: I'm very very very hungry. But I'm lazy to eat$

请帮忙。我真的很感激。

1 个答案:

答案 0 :(得分:0)

$string = file_get_contents("set_1.txt","r");
$myFile = "/Applications/MAMP/bin/mamp/uploads";
$fh = fOpen($myFile,'w') or die("could not open: " . mysql_error());
fwrite($fh, $string);
fclose($fh);

在这一部分中,您读取了可能位于根路径中的文件的文件内容,因为您没有定义路径。

接下来,在目录上运行fopen并向其写入内容。这不是它的工作原理。如果要将某些内容写入文件,则应打开该文件。我甚至不明白为什么你要写一个文件,而你已经有了一个包含内容的文件。更奇怪的是,在文件打开失败时显示mysql_error()。那些2与彼此无关。你甚至没有连接数据库。

我不熟悉LOAD DATA INFILE,但可能你的第一部分需要看起来像这样:

$string = file_get_contents("/path/to/file/set_1.txt","r");

$sql = mysql_connect("localhost", "root","root");
if(!$sql){
    die("could not connect: " . mysql_error());
}

mysql_select_db("Tweet_Corpora");
$result = mysql_query("LOAD DATA INFILE '$myfile'" . " INTO TABLE Display FIELDS TERMINATED BY '/\s+/'");

if(!$result){
    die("could not load. " . mysql_error());
}

如果你有大文件,你可能最好使用fopen并只读取文件的一部分。也许这个问题可以帮助你: Read a text file and transfer contents to mysql database