[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

noob question:traverse directory and populate mysql db

jay

2/1/2007 9:53:00 AM

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

--
Posted via http://www.ruby-....

1 Answer

Simon Kröger

2/1/2007 7:31:00 PM

0

jay schrieb:
> 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

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