Import profiles

functional

Save an import's column mapping and options as a named, reusable profile per table.

If you import the same file every week, such as a vendor CSV, you don't have to map its columns again each time. The Import / Export wizard can save its setup as a profile for the target table and apply it the next time. A profile stores:

  • the delimiter, the header-row setting, the Excel sheet, and the null token
  • the column mapping (renamed and skipped columns) and the type overrides
  • whether to create a new table or load an existing one, and whether to use BULK INSERT on SQL Server
  • the source column names the mapping was saved against
  • the name pattern of the file it was saved from, with dates and numbers ignored (so vendor_2026-09-28.csv is stored as vendor_#.csv)

Profiles belong to one target: the engine, the saved connection, the database, the schema, and the table. The Profiles row in the wizard lists every profile for the current database as name — schema.table, so two profiles with the same name on different tables are easy to tell apart. Type a name and click Save. If a profile for this table already has that name, it is updated. Pick a profile from the list to apply it; applying also fills in its schema and table. Rename and Delete work on the selected profile. Profiles need a saved connection; a wizard opened without one can't save or list them.

SQLly
Import profiles: the Profiles row with a saved vendor-CSV profile applied to the wizard.
Import profiles: the Profiles row with a saved vendor-CSV profile applied to the wizard.

Default profile

Click Default to make the selected profile the default for its table. Each table can have one default. Click Default again to clear it. Once a file is loaded or clipboard text is pasted, SQLly applies a default automatically when:

  • the target schema and table match the default's table, whether they were filled in from the file name or you type them afterwards; or
  • the file name matches the pattern a default on this connection and database was saved from, such as next week's vendor_2026-10-05.csv for a vendor_#.csv profile; or
  • for clipboard text and other files, the header columns are exactly the ones a default was saved against.

Applying a default switches the target to the default's table. If more than one default matches the file, none is applied and you pick one from the list. A default is applied once per loaded file, so edits you make afterwards are not overwritten.

When the file changes

SQLly never applies a mapping to columns it no longer fits. If the new file's columns differ from the ones the profile was saved against, the mapping and type overrides are matched by column name, ignoring case. A column that is new in the file gets an inferred type; it is imported under its own name when the profile creates the table, and skipped (-) when the profile loads an existing table, which may not have that column. The warning under the Profiles row lists skipped new columns so you can map them, and names any column the profile mapped that is gone. The same warning covers options this target can't use: a BULK INSERT profile on another engine falls back to INSERT statements, and a sheet that's missing from the workbook is reported.

Profiles are saved in import-profiles.json in SQLly's settings folder. They contain no data and no credentials. If that file can't be read, the wizard says so and refuses to save over it until you fix or move it. They need the desktop app, because the browser version can't read local files to import.