From 202201894b0682cf70674bc89839816e788829a1 Mon Sep 17 00:00:00 2001 From: miker Date: Sun, 25 Jan 2009 16:40:58 +0000 Subject: [PATCH] script to dump records based on edit_date in a format that marc_add_ids can ingest git-svn-id: svn://svn.open-ils.org/ILS/trunk@11946 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/extras/fast-extract | 71 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 Open-ILS/src/extras/fast-extract diff --git a/Open-ILS/src/extras/fast-extract b/Open-ILS/src/extras/fast-extract new file mode 100755 index 0000000000..a1dc7dbd2f --- /dev/null +++ b/Open-ILS/src/extras/fast-extract @@ -0,0 +1,71 @@ +#!/usr/bin/perl +# vim:ts=4:noet: + +use strict; +use DBI; +use FileHandle; +use Getopt::Long; +use OpenSRF::EX qw/:try/; +use OpenSRF::Utils::Logger qw/$logger/; +use OpenSRF::System; +use OpenSRF::AppSession; +use OpenSRF::Utils::SettingsClient; + +use open ':utf8'; + +binmode(STDIN, ':utf8'); +binmode(STDOUT, ':utf8'); + +$| = 1; + +my ($config, $after) = ('SYSCONFDIR/opensrf_core.xml'); + +GetOptions( + "after=s" => \$after, + "boostrap=s" => \$config, +); + +OpenSRF::System->bootstrap_client( config_file => $config ); + +# XXX Get this stuff from the settings server +my $sc = OpenSRF::Utils::SettingsClient->new; +my $db_driver = $sc->config_value( reporter => setup => database => 'driver' ); +my $db_host = $sc->config_value( reporter => setup => database => 'host' ); +my $db_port = $sc->config_value( reporter => setup => database => 'port' ); +my $db_name = $sc->config_value( reporter => setup => database => 'db' ); +if (!$db_name) { + $db_name = $sc->config_value( reporter => setup => database => 'name' ); + print STDERR "WARN: is a deprecated setting for database name. For future compatibility, you should use instead." if $db_name; +} +my $db_user = $sc->config_value( reporter => setup => database => 'user' ); +my $db_pw = $sc->config_value( reporter => setup => database => 'pw' ); + +die "Unable to retrieve database connection information from the settings server" unless ($db_driver && $db_host && $db_port && $db_name && $db_user); + +my $dsn = "dbi:" . $db_driver . ":dbname=" . $db_name .';host=' . $db_host . ';port=' . $db_port; + +my $dbh = DBI->connect($dsn,$db_user,$db_pw, {AutoCommit => 1, pg_enable_utf8 => 1, RaiseError => 1}); + +my $SQL = 'SELECT id FROM biblio.record_entry'; +$sql .= " WHERE edit_date > '$after'" if ($after); + +warn "Initial selection SQL: $SQL\n"; + +my $ids = $dbh->selectcol_arrayref($SQL); + +my $sql = <<'SQL'; +SELECT id, + tcn_source, + tcn_value, + REGEXP_REPLACE(marc, E'\\n','','g') AS marc + FROM biblio.record_entry + WHERE id = ? +SQL + +warn "Record retrieval SQL: $SQL\n"; + +for my $id ( @$ids ) { + my $row = $dbh->selectrow_hashref( $SQL, {}, $id ); + print "$$row{id} | $$row{tnc_source} | $$row{tcn_value} | $$row{marc}\n"; +} + -- 2.11.0