If youre brave with PHP, and have a test installation to play with:

Run from admin, include application_top.php and this function returns the ID of the cat it creates.

Bon appetite

function add_cat($currentid, $catname, $catdesc)
{
global $db;
$sort_order = "";
$current_category_id = $currentid;
$sql_data_array = array('sort_order' => (int)$sort_order);
$insert_sql_data = array('parent_id' => $current_category_id,
'date_added' => 'now()');

$sql_data_array = array_merge($sql_data_array, $insert_sql_data);
zen_db_perform(TABLE_CATEGORIES, $sql_data_array);
$categories_id = zen_db_insert_id();
echo "making new cat, ID: ".$categories_id."under $currentid <br>";
// check if [arent is restricted
$sql = "select parent_id from " . TABLE_CATEGORIES . "
where categories_id = '" . $categories_id . "'";
$parent_cat = $db->Execute($sql);
if ($parent_cat->fields['parent_id'] != '0') {
$sql = "select * from " . TABLE_PRODUCT_TYPES_TO_CATEGORY . "
where category_id = '" . $parent_cat->fields['parent_id'] . "'";
$has_type = $db->Execute($sql);
if ($has_type->RecordCount() > 0 ) {
while (!$has_type->EOF) {
$insert_sql_data = array('category_id' => $categories_id,
'product_type_id' => $has_type->fields['product_type_id']);
zen_db_perform(TABLE_PRODUCT_TYPES_TO_CATEGORY, $insert_sql_data);
$has_type->moveNext();
}
}
}

$languages = zen_get_languages();
//echo "There are $languages languages\n<br>";
//print_r($languages);

for ($i=0, $n=sizeof($languages); $i<$n; $i++)
{
$categories_name_array[1] = $catname;
$categories_description_array[1] = $catdesc;
$language_id = $languages[$i]['id'];

// clean $categories_description when blank or just <p /> left behind
$sql_data_array = array('categories_name' => zen_db_prepare_input($categories_name_array[$language_id]),
'categories_description' => ($categories_description_array[$language_id] == '<p />' ? '' : zen_db_prepare_input($categories_description_array[$language_id])));
$action = 'insert_category';
if ($action == 'insert_category')
{
$insert_sql_data = array('categories_id' => $categories_id,
'language_id' => $languages[$i]['id']);
$sql_data_array = array_merge($sql_data_array, $insert_sql_data);
zen_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array);
//echo "added $catname <br>\n";
return($categories_id);
}
}
}