from pathlib import Path
from ..db.connection import connect
+from ..db import status
from ..errors import UsageError
# Do not repeat documentation of subcommand classes.
help='Build a blank nominatim db')
group.add_argument('--import-data', action='store_true',
help='Import a osm file')
+ group.add_argument('--load-data', action='store_true',
+ help='Copy data to live tables from import table')
+ group.add_argument('--index', action='store_true',
+ help='Index the data')
group = parser.add_argument_group('Options')
group.add_argument('--no-partitions', action='store_true',
help='Do not partition search indices')
help='Drop tables needed for updates, making the database readonly')
group.add_argument('--osm2pgsql-cache', metavar='SIZE', type=int,
help='Size of cache to be used by osm2pgsql (in MB)')
+ group.add_argument('--no-analyse', action='store_true',
+ help='Do not perform analyse operations during index')
+ group.add_argument('--ignore-errors', action='store_true',
+ help="Ignore certain erros on import.")
@staticmethod
def run(args):
if args.setup_db:
LOG.warning('Setup DB')
- mpath = database_import.install_module(args.module_dir, args.project_dir,
- args.config.DATABASE_MODULE_PATH)
with connect(args.config.get_libpq_dsn()) as conn:
database_import.setup_extensions(conn)
- database_import.check_module_dir_path(conn, mpath)
+ database_import.install_module(args.module_dir, args.project_dir,
+ args.config.DATABASE_MODULE_PATH,
+ conn=conn)
database_import.import_base_data(args.config.get_libpq_dsn(),
args.data_dir, args.no_partitions)
raise UsageError('Missing required --osm-file argument')
database_import.import_osm_data(Path(args.osm_file),
args.osm2pgsql_options(0, 1),
- drop=args.drop)
+ drop=args.drop,
+ ignore_errors=args.ignore_errors)
+
+ if args.load_data:
+ LOG.warning('Load data')
+ with connect(args.config.get_libpq_dsn()) as conn:
+ database_import.truncate_data_tables(conn, args.config.MAX_WORD_FREQUENCY)
+ database_import.load_data(args.config.get_libpq_dsn(),
+ args.data_dir,
+ args.threads or 1)
+
+ with connect(args.config.get_libpq_dsn()) as conn:
+ try:
+ status.set_status(conn, status.compute_database_date(conn))
+ except Exception as exc: # pylint: disable=broad-except
+ LOG.error('Cannot determine date of database: %s', exc)
+
+ if args.index:
+ LOG.warning('Indexing')
+ from ..indexer.indexer import Indexer
+ indexer = Indexer(args.config.get_libpq_dsn(), args.threads or 1)
+ indexer.index_full()