NAME "DBIx::Table2Hash" - Read a database table into a hash Synopsis #!/usr/bin/perl my($key2value) = DBIx::Table2Hash -> new ( dbh => $dbh, table_name => $table_name, key_column => 'name', value_column => 'id' ) -> select(); # or my($key2hashref) = DBIx::Table2Hash -> new ( dbh => $dbh, table_name => $table_name, key_column => 'name', ) -> select_hashref(); Description "DBIx::Table2Hash" is a pure Perl module. This module reads a database table and stores keys and values in a hash. The resultant hash is not nested in any way. The aim is to create a hash which is a simple look-up table. To this end, the module allows the key_column to point to an SQL expression. Distributions This module is available both as a Unix-style distro (*.tgz) and an ActiveState-style distro (*.ppd). The latter is shipped in a *.zip file. See http://savage.net.au/Perl-modules.html for details. See http://savage.net.au/Perl-modules/html/installing-a-module.html for help on unpacking and installing each type of distro. Constructor and initialization new(...) returns a "DBIx::Table2Hash" object. This is the class's contructor. Parameters: * dbh A database handle. This parameter is mandatory. * table_name The name of the table to select from. This parameter is mandatory. * key_column The name of the column, or SQL expression, to use for hash keys. Say you have 2 columns, called col_a and col_b. Then you can concatenate them with: key_column => 'concat(col_a, col_b)' or, even fancier, key_column => "concat(col_a, '-', col_b)" This parameter is mandatory. * value_column The name of the column to use for hash values. This parameter is mandatory if you are going to call select(), and optional if you are going to call select_hashref(). * where The optional where clause, including the word 'where', to add to the select. Method: new(...) Returns a object of type "DBIx::Table2Hash". See above, in the section called 'Constructor and initialization'. Method: select() Returns a hash ref. Calling select() actually executes the SQL select statement, and builds the hash. Each key in the hash points to a single value. The demo program test-table2hash.pl, in the examples/ directory, calls select(). Method: select_hashref() Returns a hash ref. Calling select_hashref() actually executes the SQL select statement, and builds the hash. Each key in the hash points to a hashref. The demo program test-table2hash.pl, in the examples/ directory, calls select_hashref(). Required Modules Only those shipped with Perl. Changes See Changes.txt. FAQ Q: What is the point of this module? A: To be able to restore a hash from a database rather than from a file. Q: Can your other module "DBIx::Hash2Table" be used to save the hash back to the database? A: Sure. Q: Do you ship a complete demo, which loads a table and demonstrates the 2 methods select() and select_hashref()? A: Yes. See the examples/ directory. If you installed this module locally via ppm, look in the x86/ directory for the file to unpack. If you installed this module remotely via ppm, you need to download and unpack the distro itself. Q: Are there any other modules with similar capabilities? A: Yes: * "DBIx::Lookup::Field" Quite similar. * "DBIx::TableHash" This module takes a very long set of parameters, but unfortunately does not take a database handle. It does mean the module, being extremely complex, can read in more than one column as the value of a hash key, and it has caching abilities too. It works by tieing a hash to an MySQL table, and hence supports writing to the table. It uses MySQL-specific code, for example, when it locks tables. Unfortunately, it does not use data binding, so it cannot handle data which contains single quotes! Further, it uses /^\w+$/ to 'validate' column names, so it cannot accept an SQL expression instead of a column name. Lastly, it also uses /^\w+$/ to 'validate' table names, so it cannot accept table names and views containing spaces and other 'funny' characters, eg '&' (both of which I have to deal with under MS Access). * "DBIx::Tree" This module is more like the inverse of "DBIx::Hash2Table", in that it assumes you are building a nested hash. As it reads the database table it calls a call-back sub, which you use to process the rows of the table. Author "DBIx::Table2Hash" was written by Ron Savage ** in 2003. Home page: http://savage.net.au/index.html Copyright Australian copyright (c) 2003, Ron Savage. All rights reserved. All Programs of mine are 'OSI Certified Open Source Software'; you can redistribute them and/or modify them under the terms of The Artistic License, a copy of which is available at: http://www.opensource.org/licenses/index.html