Use wp_cron to run a job every hour. http://codex.wordpress.org/Function_Reference/wp_cron
Use $wpdb->get_results to fetch data from your external table.
Example:
$q = "SELECT * FROM my_table";
$results = $wpdb->get_results($q, OBJECT);
foreach ( $results as $result) {
}
Insert new CPT-posts using wp_insert_post() http://codex.wordpress.org/Function_Reference/wp_insert_post