I'm moving other databases (from the public schema) into a new schemas in a single database (thus a single connection can access them all). My approach was to load into the public schema then rename that.
First, if you have anything in your public schema, rename to save. I found some extensions, "hstore" specifically, needed to be recreated in the new schema. Execute these SQL command in
psql or otherwise.
alter schema public rename to public_original;
create schema public;
create extension hstore; -- etc.
Backup and Restore your database to the public schema. Adjust commands for your connection settings.
pg_dump --dbname=sourcedb --schema=public \
pg_restore --jobs=4 --dbname=targetdb sourcedb.dump
Your database should now be in the public schema. Now issue these SQL commands to rename the schema, and rename the original public schema.
alter schema public rename to sourcedb;
alter schema public_original rename to public;
If you are moving multiple databases like I did, create a new public schema and iterate for each. Afterwards, restore the original_public schema.
As an alternative, if you have no naming collisions between the existing public relations (tables, sequences, views, etc) and the imported ones, you could import everything together and then move the new tables into the new schema.
create schema newschema;
alter table table1 set schema newschema;
Just remember to test commands and do a test run on a test database. Scripting this is recommended ;-)