in reply to Re^2: key value in text format
in thread key value in text format
I second SQlite. I use it a lot, and if your dataset is big(ish), you don't want to be parsing flat files for every lookup.
How you store this depends on just how many [ key1=value1, key2=value2] there are.
If there is a fixed list of 'key1','key2' and it's not too many: bite the bullet and add the columns.
Otherwise, you get to use a link (This is Database 101. search for 'database normalization')
each record should be
[id], field1, field2
then in a separate table
You can also have a 3rd table with
[link_id], source_file_name
or whatever other metadata you need to keep.
SQLite very kindly has a magic ROWID column. It wont' return it on SELECT *, but will on SELECT ROWID,*.
Of course you get to do two queries for each lookup: SELECT ROWID,* FROM main_data and then SELECT * FROM extra_data WHERE link_id = ?
HTH.
TO clarify: if your 'real' data is
Then you get:
Primary table:
lookup table:
How you store this depends on just how many [ key1=value1, key2=value2] there are.
If there is a fixed list of 'key1','key2' and it's not too many: bite the bullet and add the columns.
Otherwise, you get to use a link (This is Database 101. search for 'database normalization')
each record should be
[id], field1, field2
then in a separate table
[link_id], key1, value1 [link_id], key2, value2
You can also have a 3rd table with
[link_id], source_file_name
or whatever other metadata you need to keep.
SQLite very kindly has a magic ROWID column. It wont' return it on SELECT *, but will on SELECT ROWID,*.
Of course you get to do two queries for each lookup: SELECT ROWID,* FROM main_data and then SELECT * FROM extra_data WHERE link_id = ?
HTH.
TO clarify: if your 'real' data is
name=bob, age=75, [ hair=balding, glasses=bifocal] name=john, age=20, [ sport=chess ]
Then you get:
Primary table:
1, bob, 45 2, john, 20
lookup table:
1,hair,balding 1,glasses,bifocal 2,sport,chess
In Section
Seekers of Perl Wisdom