# by the xk.
###
-require "src/logger.pl";
require "src/core.pl";
+require "src/logger.pl";
+require "src/modules.pl";
require "src/Misc.pl";
require "src/Files.pl";
-package MYSQL;
-require "src/Factoids/db_mysql.pl";
-package DBM;
-require "src/Factoids/db_dbm.pl";
+&loadDBModules();
+require "src/dbi.pl";
package main;
+# todo: main()
+
if (!scalar @ARGV) {
print "Usage: dbm2mysql <whatever dbm>\n";
print "Example: dbm2mysql.pl apt\n";
my $key;
my %db;
-### open all the data...
-&loadConfig("files/infobot.config");
-$dbname = $param{'DBFile'};
-my $dbh_mysql = MYSQL::openDB();
-DBM::openDB();
+# open dbm.
+if (!dbmopen(%db, $dbfile, 0666)) {
+ &ERROR("Failed open to dbm file ($dbfile).");
+ exit 1;
+}
+&status("::: opening dbm file: $dbfile");
-print "scalar db == '". scalar(keys %db) ."'.\n";
+# open all the data...
+&loadConfig("files/infobot.config");
+$dbname = $param{'DBName'};
+my $dbh_mysql = sqlOpenDB($param{'DBName'},
+ $param{'DBType'}, $param{'SQLUser'}, $param{'SQLPass'});
+print "DEBUG: scalar db == '". scalar(keys %db) ."'.\n";
-my ($ndef, $i) = (1,1);
my $factoid;
+my $ndef = 1;
+my $i = 1;
foreach $factoid (keys %db) {
- foreach (@DBM::extra_format) {
- my $val = &DBM::getFactInfo($key, $_, $db{$key});
- if (!defined $val) {
- $ndef++;
- next;
- }
- &MYSQL::setFactInfo($key, $_, $val); # fact, type, what
- }
+ &sqlReplace("factoids", {
+ factoid_key => $_,
+ factoid_value => $db{$_},
+ } );
+
$i++;
print "i=$i... " if ($i % 100 == 0);
print "ndef=$ndef... " if ($ndef % 1000 == 0);
}
print "Done.\n";
+&closeDB();
+dbmclose(%db);