This was the code I was playing around with. I included an option that is set after this is run, and then wrapped it in an if statement to check if the option was set or not. Running this more than once seemed to give some issues.
wp_insert_term('Arts and Entertainment', 'place-types', array('','arts-and-entertainment',''));
$parent_term = term_exists( 'arts-and-entertainment', 'place-types' );
$parent_term_id = $parent_term['term_id'];
wp_insert_term('Arcades', 'place-types', array('slug' => 'arcades','parent'=> $parent_term_id));;
wp_insert_term('Art Galleries', 'place-types', array('slug' => 'art-galleries','parent'=> $parent_term_id));
wp_insert_term('Food', 'place-types', array('slug' => 'food'));
$parent_term = term_exists( 'food', 'place-types' );
$parent_term_id = $parent_term['term_id'];
wp_insert_term('African Restaurants', 'place-types', array('slug' => 'african-restaurants','parent'=> $parent_term_id));;
wp_insert_term('Nightlife', 'place-types', array('slug' => 'nightlife'));
wp_insert_term('Shops', 'place-types', array('slug' => 'shops'));
wp_insert_term('The Great Outdoors', 'place-types', array('slug' => 'outdoors'));
wp_insert_term('Travel Spots', 'place-types', array('slug' => 'travel-spots'));
I personally wouldn’t recommend doing it this way, I feel a pre-populated mysql dump would be better.