多个txt文件到mysql条目脚本

时间:2015-09-05 16:32:11

标签: php mysql

好的,这是我的情况。

我使用的脚本扫描视频目录,检索视频上的imdb信息,然后将数据存储在文本文件中。每部电影1部。我想从txt文件中获取数据并插入数据库。

脚本需要检查以查看新内容和什么内容,并且只插入新信息。

这就是所有txt文件的布局方式。

xmlns:tools="http://schemas.android.com/tools"

解释每一行

09/04/2015 02:11:54
Cast Away
movie
tt0162222
Adventure,Drama
7.7
videos/Cast.Away.2000.mp4
pg_13
A FedEx executive must transform himself physically and emotionally to survive a crash landing on a deserted island.

所以基本上我需要弄清楚如何将txt数据放入mysql数据库,以便我可以在我的家庭媒体服务器上使用它。基本上我是为我的大型DVD收藏制作类似netflix的网站。

BTW目录布局是

Line 1 - Date txt/time file created
Line 2 - Title of Movie
Line 3 - Type of video (Movie or TV show)
Line 4 - image file associated with movie
Line 5 - Genre
Line 6 - Viewer Rating (0.0 to 10)
Line 7 - video directory
Line 8 - Movie Rating
Line 9 - Description

这是更新的代码(9/5/2015 4:22)仍然是相同的结果。空行。

/data  - (txt files)
/pics  - (cover photos)
/videos - (video files)
script.php

1 个答案:

答案 0 :(得分:1)

假设您要导入数据库的所有文本文件都在一个文件夹中,这就是我要做的:

首先,使用scandir()获取目录中所有文本文件的列表。

$textFilesArray = scandir("directoryContainingTheFiles"); 

然后,您可以遍历文件

foreach( $textFilesArray AS $textFile ){

从文件中读取所有数据....

# Open the file for reading (r)....
$handle = fopen($textFile, "r");

# Get the first line of the file
$dateCreated = fgets($handle);

# get the next line from the file
$movieTitle = fgets($handle);

现在,您可以选择多种方法来避免重复记录。

一个选项是在文件的开头/结尾保存一个标志,当标志出现时,跳过尝试插入电影。

另一种选择是在你的一个mySQL字段上创建一个唯一键。 (也许在电影名称上)。然后,当您执行插入操作时,不会创建重复项。 (重复的输入尝试将导致错误,这意味着什么都不会发生。如果你想要抑制那些mySQL错误,你总是可以使用“INSERT IGNORE ....”而不是“INSERT ....”)

总结如下:

$textFilesArray = scandir("directoryContainingTheFiles"); 

foreach( $textFilesArray AS $textFile ){

    # Open the file for reading (r)....
    $handle = fopen($textFile, "r");

    # Get the first line of the file
    $dateCreated = fgets($handle);

    # get the next line from the file
    $movieTitle = fgets($handle);

    # get the rest of the file into variables here

    # preform checks on variables before attempting the insert
    # (make sure strings are escaped, and number values contain all numbers, etc.)

    # PREFORM mySQL INSERT QUERY HERE!
    # something like: "INSERT INTO movies (date, title, etc) VALUES ($dateCreated, $movieTitle, etc)"
}