Use Tools → Migrate → Structured data import to bring PostgreSQL or MongoDB records into Cedros. Choose a destination, supply a small batch, map its fields, and preview the result before importing.
This transfers records into Cedros content or custom data. It does not restore a database's tables, indexes, relationships, users, or permissions, and it does not keep the source and Cedros continuously synchronized.
Choose your source and destination
MongoDB: Use a JSON array or newline-delimited JSON export. Each record must be a JSON object. Direct MongoDB connections are not available on the standard hosted service; use Upload or paste.
PostgreSQL: Choose Postgres in the importer. It accepts JSON, newline-delimited JSON, or CSV with column headers. You can also connect to a PostgreSQL database that your Cedros server can reach.
Do not upload a SQL dump, PostgreSQL backup archive, BSON dump, or compressed backup. Export the records you need in a supported text format. For custom data, JSON preserves numbers, booleans, and nested objects; CSV values arrive as text.
Choose one destination for each batch:
- Blog, Page, or Docs: Create draft content from fields such as title, body, slug, and URL path. A title is required.
- Custom data: Store each source record in a Cedros collection. Enter the destination Collection name and choose a stable Unique ID field under Advanced options.
- Media library, Navigation menu, Forms, Redirects, or Theme & site settings: Import records prepared for that particular destination. These do not work as a general-purpose database restore.
Custom data preserves the record's payload; field mapping selects its title and identifier rather than renaming every field. Importing records also does not create a public page or application for viewing them.
For WordPress content, follow Migrating from WordPress instead.
Prepare a small batch
You need data operations access to preview and import. If the actions are unavailable, ask your administrator to check your feature access. Before importing into an existing site, create a backup.
Each run accepts at most 500 records. Split larger exports into separate files or batches before loading them. Start with a few representative records so you can check the destination before moving the rest.
Include only the records and fields you intend to transfer. For live connections, ask your database administrator for an account with read-only access to the required source data. Enter connection details directly in the admin form and keep credentials out of screenshots and support messages.
For Custom data, check identifiers before importing. Cedros converts them to lowercase keys containing letters, numbers, and hyphens. Different source IDs can therefore become the same destination key: for example, Order_A and order-a. A matching key replaces the existing record's payload in that collection; it does not merge individual fields.
If no usable ID is found, the importer can assign position-based keys such as row-1. Those repeat in later batches. Use stable, distinct IDs and inspect the destination keys in Preview before importing into a shared collection.
Upload or paste an export
- Open Tools → Migrate and use Structured data import.
- In Plan, choose MongoDB or Postgres, then select the Destination. For Custom data, enter the intended Collection name. Select Continue.
- In Source data, select Upload or paste.
- Use Upload export file, or paste the complete data into Export contents. Replace the example text with your own records.
- Open Advanced options to check the field mappings described below, then select Review.
For JSON, a simple array of objects is the clearest format. Newline-delimited JSON uses one complete object per line. The importer also accepts objects containing a records array named rows, documents, data, or items. Compare the preview count with your expected count; non-object values in an array are not imported as records.
For CSV, keep one header per column and quote values that contain commas or line breaks. Empty or mismatched headers can prevent the expected fields from being found.
Connect to PostgreSQL
Use this option when a database administrator has prepared the source and confirmed that the Cedros server can connect to it. Otherwise, use an export file.
- In Plan, choose Postgres and the destination, then select Continue.
- Select Connect to a database and enter the Postgres connection string supplied by your administrator.
- Enter Table name, such as
public.posts. Alternatively, open Advanced options and supply a Custom query that returns the required fields. A custom query takes precedence over the table name. - Set Row limit under Advanced options. It starts at 100 and must be between 1 and 500. Check field mappings, then select Review.
A custom query must be a single read-only SELECT query, without a terminating semicolon. Cedros reads PostgreSQL in a read-only transaction. Ask your database administrator to prepare the query if you are unsure which records it selects.
Preview and Import read the source separately. A live preview is not a saved copy of the records that will be imported. If the source changes between those actions, the imported batch can differ. Use an export file when you need a fixed batch to review.
There is no automatic “next 500” import. Repeating the same table or query can read the same records again. For multiple batches, prepare distinct queries with a consistent order and nonoverlapping selection, or use separate export files.
Map fields and preview
In Advanced options → Field mapping, enter source field names, not example values. Leave a mapping blank to use automatic detection. For nested JSON, a path such as article.title selects the title field inside article.
For content imports, map Title to the heading field, Markdown body or HTML body to the appropriate content field, and Slug, Excerpt, or URL path when needed. Blog and Docs also offer Tags and Category. Tags can come from a JSON array or comma-separated text.
For example, if your columns are headline, article_text, and permalink, enter headline in Title, article_text in Markdown body, and permalink in URL path. An explicit mapping replaces automatic detection for that field; a misspelled name can leave the field empty.
- In Review, select Preview. This checks the supplied records without writing them to the destination.
- Check the total and ready counts, titles, destination paths or keys, and every Needs fix issue.
- Return to Source data to correct records or mappings, then preview again. Changing the input clears the previous preview.
- Continue only when the preview contains the expected records with no row issues.
The table shows all problem rows and a limited number of ready rows. Use the totals to check the whole batch. A ready preview does not verify the full appearance of an article, detect every existing destination conflict, or prove that a media URL can be downloaded.
Import and verify the result
- Confirm the site, collection or destination, and batch are correct. Select Import to apply it directly.
- Wait for Import summary, then compare its count and destinations with the batch you intended to move.
- Open representative imported records and check their actual contents. Blog, Page, and Docs entries start as drafts; review formatting, images, links, and metadata before publishing them.
- Check any existing records or settings the import was intended to update before proceeding to the next batch.
Content imports create new entries rather than overwriting an existing article at the same path. Existing paths can block Import even after Preview succeeds. Custom data behaves differently: matching keys replace record payloads.
Other destinations can also change existing site behavior. A navigation import replaces the items in the matching menu, and site-settings imports can change the canonical site address. Media imports download files but do not rewrite article image links. Check these effects before using those destinations.
If the import fails or the browser disconnects, inspect the destination before retrying. Earlier records in the batch may already have been saved. Prepare a new batch with only the remaining records once you know what completed. Start over clears the wizard; it does not undo imported data.
Resolve common problems
No items found or Review stays disabled. Supply your own export rather than leaving the sample text unchanged. For a live connection, check the table, query, and access with your database administrator.
Missing title or an empty field. Check the exact source field name and any nested path. Clear an incorrect mapping to restore automatic detection, or map the correct field explicitly.
Too many records or source too large. Split the data into smaller batches. The record limit applies to uploaded files as well as live reads; increasing the live Row limit cannot exceed 500.
Postgres connection or query failed. Check the connection string, source permissions, network access from Cedros, table name, and query. A database reachable from your laptop may not be reachable from the Cedros server. Use an export if a live connection is unavailable.
MongoDB live connection is unavailable. Export JSON or newline-delimited JSON and choose Upload or paste. The visible connection option does not mean your installation supports it.
An existing path blocks import. Inspect that entry before retrying. Exclude content already imported, or choose a distinct path for different content.
Custom records replaced one another. Check for repeated or normalized IDs, including position-based fallback keys. Correct the keys before the next import; restore any overwritten information from your source or backup.