100,000 entries ? this conventinal solution not will scale for you.
i am in a project like this in moment.
try migrate, in this order, (from less to more entities):
- users (not have admin api, then you need insert in db)
- tags (not have admin api, then you need insert in db)
- posts (have admin api, but not bulk api)
A bulk api are much useful in this case, but are not implemented yet.
You are find some caveats in path:
- slugs generations
- ids generatios,
- how convert html to mobiledoc (if yout legacy content not are compatible).
- Careful with edit endpoint, because its not idemponent.
Ghostjs are not designed to scale with multiple instances neither multiple child process, this is another problem, because you have only one thread availible and not have all power of machine (if have multiple cores).
In have much less content (7000 posts), and migration job is extreme slow here.
In this moment i m thinkng in insert posts via db, and restart app after end, its needed because ghostjs caches urls and manage his content using a internal event system, you can try upload a routes.yml in admin to force ghost query db and regenerate your content.
I think that objectId in database was possibly a bad choice, becouse i cant see the benefits of it. i think a non auto-increment was a good choice, but couple it a objectId was bad to us case where we need export
- import by json not will scale to large contents
- ghostjs not have a matured API to create a migration script
- you need insert in db, and will enconter some caveats (test a sample of your dada first)
- you need force ghost regenerate your content after