#!/bin/env tclsh package require json package require sqlite3 proc fatal {reason {code -1}} { puts stderr "$argv0: fatal: $reason" exit $code } proc usage {} { global argv0 puts stderr "usage: $argv0 DB-PATH DATAFILE ?DATAFILE ...?" exit -1 } if {[llength $argv] < 2} usage set datafiles [lassign $argv dbpath] if {[catch {sqlite3 db $dbpath -create false}]} { fatal "can't open \"$dbpath\"" } foreach datafile $datafiles { set fd [open $datafile] set data [::json::json2dict [read $fd]] close $fd foreach title $data { set name [dict get $title title] set href [dict get $title href] puts $name db eval { INSERT OR IGNORE INTO titles(name, href) VALUES($name, $href); } } }