I tinkered with import_spells.pl a bit.
As a test, I created a new table copy of "spells_new" table.  Named it "Spells_live" and emptied it., then changed import_spells.pl with this
	Code:
	--- C:/test/import_spells.old.pl	Mon Mar  1 13:13:41 2010
+++ C:/test/import_spells.pl	Mon Mar  1 13:14:52 2010
@@ -9,7 +9,7 @@
 getopts('c:s:t:dh');
 my $conf = "eqemu_config.xml"; #default
 my $spellf = "spells_us.txt"; #default
-my $table = "spells_new"; #default
+my $table = "spells_live"; #default
 
 if ($opt_h) { #help (-h)
 	printf "\nUsage: import_spells.pl [-c path] [-s path] [-t table] [-d]\n";
@@ -102,6 +102,7 @@
 		}
 	} elsif (scalar(@s) > scalar(@t_col_names)) {
 		for (my $z = 1; $z <= $col_diff; $z++) {
+		  if ( length(@s) < 1 ) { @s = 0 }
 			pop(@s);
 		}
 	}
 The added single line converts any null value to 0 before the string is populated.
Tested with a copy of the Spells_en.txt and spells_us.txt from my live EQ folder, and got a result of "Spells loaded: 23120 of 23120"
The resulting table 'looks' correct also, though I haven't gotten around to testing anything with it.  Not sure how "correct" the code is either, since I've never really looked at perl before.  Should work fine with SoF files.