changeset 22:7feaff7cc22e

Cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 05 Sep 2011 18:37:33 +0300
parents 5162abae15fd
children 9ba859d9f931
files convert_urllog_db.tcl
diffstat 1 files changed, 47 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/convert_urllog_db.tcl	Mon Sep 05 18:30:20 2011 +0300
+++ b/convert_urllog_db.tcl	Mon Sep 05 18:37:33 2011 +0300
@@ -1,10 +1,36 @@
 #!/usr/bin/tclsh
+# TCL script for converting URLLog v1.x flat file
+# format database to SQLite3 database.
+#
+# Written by Matti 'ccr' Hamalainen <ccr@tnsp.org>
+# (C) Copyright 2011 Tecnic Software productions (TNSP)
+#
 package require sqlite3
 
-set urllog_orig_file "data.urllog"
-set urllog_db_file "urllog.sqlite"
+### Check commandline arguments
+if {$argc != 2} {
+	puts "Usage: $argv0 <input_flat_file_db> <output_sqlite_db_file>"
+	exit 0
+}
+
+set db_input [lindex $argv 0]
+set db_output [lindex $argv 1]
+set db_table "urls"
 
 
+### Ask for confirmation
+puts "Conversion of '$db_input' to SQLite database '$db_output', to table '$db_table'."
+puts "NOTICE! This WILL destroy the current data in table '$db_table'!"
+
+puts -nonewline "Proceed \[y/N\]? "
+flush stdout
+set response [gets stdin]
+if {[string tolower $response] != "y"} {
+	puts "OK, aborting."
+	exit 0
+}
+
+### Helper functions
 proc escape { str } {
 	return [string map {' ''} $str]
 }
@@ -14,27 +40,32 @@
 }
 
 
-if {[catch {set fd [open $urllog_orig_file r]} uerrmsg]} {
-	puts "Could not open '$urllog_orig_file' for reading: $uerrmsg"
+### Open flatfile for reading
+if {[catch {set fd [open $db_input r]} uerrmsg]} {
+	puts "Could not open '$db_input' for reading: $uerrmsg"
 	exit 1
 }
 
-if {[catch {sqlite3 urldb $urllog_db_file} uerrmsg]} {
-	puts "Could not open SQLite3 database '$urllog_db_file': $uerrmsg"
+### Open SQLite database
+if {[catch {sqlite3 urldb $db_output} uerrmsg]} {
+	puts "Could not open SQLite3 database '$db_output': $uerrmsg"
 	exit 2
 }
 
-puts "Dropping current urls table."
-if {[catch {urldb eval {DROP TABLE urls}} uerrmsg]} {
+### Drop old table
+puts "Dropping current '$db_table' table."
+if {[catch {urldb eval {DROP TABLE $db_table}} uerrmsg]} {
 	puts "Dropping table resulted in error (ignored): $uerrmsg"
 }
 
-puts "Creating urls table."
-if {[catch {urldb eval {CREATE TABLE urls(id INTEGER PRIMARY KEY AUTOINCREMENT, utime INT, url VARCHAR(2048), user VARCHAR(32), host VARCHAR(256), chan VARCHAR(32))}} uerrmsg]} {
+### Create new
+puts "Creating new table '$db_table'."
+if {[catch {urldb eval "CREATE TABLE $db_table (id INTEGER PRIMARY KEY AUTOINCREMENT, utime INT, url VARCHAR(2048), user VARCHAR(32), host VARCHAR(256), chan VARCHAR(32))}} uerrmsg]" {
 	puts "Error creating table! $uerrmsg"
 	exit 3
 }
 
+### Detect URL database version
 puts -nonewline "Detecting database version: "
 set nline 0
 set minentries 9999
@@ -56,8 +87,11 @@
 	puts "new"
 }
 
+### Show some information
 puts "Database contains $nline records, with $minentries / $maxentries entries."
 
+
+### Begin conversion
 puts -nonewline "Converting database, please wait ... round #1 "
 set nline 0
 seek $fd 0 start
@@ -72,7 +106,7 @@
 		}
 		set uid [lindex $items 4]
 		if {$uid != ""} {
-			set sql "INSERT INTO urls (id,utime,url,user,host) VALUES ($uid, [lindex $items 1], '[lescape $items 0]', '[lescape $items 2]', '[escape $host]')"
+			set sql "INSERT INTO $db_table (id,utime,url,user,host) VALUES ($uid, [lindex $items 1], '[lescape $items 0]', '[lescape $items 2]', '[escape $host]')"
 			if {[catch {urldb eval $sql} uerrmsg]} {
 				puts "\nError ($nline): $uerrmsg on:\n$sql"
 				exit 15
@@ -100,7 +134,7 @@
 		}
 		set uid [lindex $items 4]
 		if {$uid == ""} {
-			set sql "INSERT INTO urls (utime,url,user,host) VALUES ([lindex $items 1], '[lescape $items 0]', '[lescape $items 2]', '[escape $host]')"
+			set sql "INSERT INTO $db_table (utime,url,user,host) VALUES ([lindex $items 1], '[lescape $items 0]', '[lescape $items 2]', '[escape $host]')"
 			if {[catch {urldb eval $sql} uerrmsg]} {
 				puts "\nError ($nline): $uerrmsg on:\n$sql"
 				exit 15
@@ -117,4 +151,4 @@
 close $fd
 
 puts "OK"
-puts "New SQLite3 database is in file '$urllog_db_file'"
\ No newline at end of file
+puts "New SQLite3 database is in file '$db_output'"