Ik zocht de mogelijkheid om snel informatie over bestanden op te slaan in een MySQL database. Dit blijkt het meest eenvoudig te zijn door middel van het SQL commando LOAD DATA INFILE.
Stel, je hebt een map vol interessante bestanden en je wilt de gegevens daarvan opslaan in een MySQL tabel. Je kunt dan gebruik maken van het volgende PHP script:
<?php
// change folder_containing_files with the name of the folder which contains the interesting files
exec('ls --ignore="filename.csv" folder_containing_files > ./folder_containing_files/filename.csv');
// extra variables
$timestamp = date("Y-m-d\TH:i:s");
// connect to database
function db_connect() {
$conn = mysql_connect("localhost", "username", "password");
mysql_select_db("databasename", $conn);
}
// establish database connection
db_connect();
// set up query to import data, assuming the
// csv file is at the top level of the C drive
$sql = "LOAD DATA INFILE '/home/username/folder_containing_files/filename.csv' INTO TABLE interesting_files LINES TERMINATED BY '\n' (Filename), Timestamp = '$timestamp'";
// run the query to load the data
mysql_query($sql) or die(mysql_error());
unlink('./folder_containing_files/filename.csv');
?>
In dit zeer simpele voorbeeldje heb ik alleen gebruik gemaakt van de output van het commando ls -l en hiermee heb ik slechts 1 veld in mijn database tabel gevuld. Uiteraard is het mogelijk om veel meer informatie over de bestanden op te slaan, door het commando ls uit te breiden. Meer informatie daarover vind je hier.
Ik ben op dit moment nog bezig om te zien of de MD5 hashwaarde aan de lijst kan worden toegevoegd. Ik heb hier wat informatie gevonden. Als het iemand lukt om de MD5 hashwaarde aan de MySQL tabel toe te voegen dan lees ik dat graag ...
