我有关于将数据从.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$
请帮忙。我真的很感激。
答案 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