Noob question:traverse directory and populate mysql db


#1

Hi,

i was hoping for a little bit of direction on a project i’m starting
that will look to scan a directory structure full of jpgs, and populate
a db table with various meta data (i.e. filename, path, maybe some exif
data if i can do that easily).

it’s clear that i’ll need find.find(), ‘mysql’ and a few other nifties.
it’s more about how to get the data into the db.

would you loop through the find and create a hash for each file, then a
hash of hashes for all of them, before mapping it into the db?

any comments or pointers gratefully recieved.
thx

jay


#2

jay schrieb:

would you loop through the find and create a hash for each file, then a
hash of hashes for all of them, before mapping it into the db?

any comments or pointers gratefully recieved.
thx

jay

Hi jay,

this isn’t optimal but should get you started:


require ‘mysql’

db = Mysql::new(“localhost”, “user”, “pw”, “testdb”)
db.query(“CREATE TABLE IF NOT EXISTS jpgs (name text, size int)”)

Dir[’/path/to/images/**/*.jpg’].each do |file|
db.query(“INSERT INTO jpgs VALUES (’#{file}’, #{File.size(file)})”)
end

db.close

if my memory doesn’t play tricks on me it should be way faster
to use a single insert statement with lots of data - have fun!

cheers

Simon