The Notion export, read as pages and databases.
Notion hands you a zip of Markdown and CSV. Most tools take the Markdown and lose the databases. Here the folders become the page tree, the Markdown becomes pages, and every CSV becomes a database with columns that have types.
Drop the zip in, unopened
A large export arrives as a zip of zips — Part-1.zip, Part-2.zip — and unpacking goes round again rather than asking you to do it by hand. A plain folder of .md and .csv files imports exactly as well.
What comes across
The page tree
A folder becomes the parent of the pages inside it, so the nesting you built in Notion is the nesting you land in here. Notion's id suffix is stripped off every title.
Pages, with their formatting
Headings, lists, code blocks, tables, quotes and links come through as blocks, not as a wall of text. The duplicated title at the top of every Notion export is removed, because a page whose first line repeats its own name reads like a bug.
Databases as databases
A CSV becomes a database, and each column gets a type read from what is actually in it: number, date, checkbox, or a select with its choices when the values repeat. The rest stay text. Rows arrive as rows you can filter, group and put on a board.
Where it stops
Three hundred files in one import, and anything left over is counted and reported rather than dropped quietly. Comments, permissions, synced blocks and Notion's own AI blocks are not in the export, so they cannot be in the import.
Then it is yours
The pages are rows in your Postgres and the databases are rows in the same table. Back the whole workspace up to one file, or run the thing on your own machine and never ask anybody for an export again.