Files
shopdb-flask/docs/CSV-IMPORT-GUIDE.md
benjamin.baker 0577e32240 add CSV import guide and clarify Azure export location
Adds a concise native-CSV import guide covering exact headers, required columns, foreign-key-by-name resolution, import order, and the do-not-edit rule for Azure/Thor exports. Also clarifies the Import Site Assets Azure card that Bulk operations lives in the top command bar of the group Members page, matching the Entra UI.
2026-08-25 17:12:01 -04:00

3.3 KiB

ShopDB CSV Import Guide

Short version: one CSV per table, a header row of exact column names, one record per row. The importer matches on natural keys, so re-importing updates instead of duplicating.

Rules for hand-built native CSVs

  1. First row is the header. Use the exact column names below, lowercase, no spaces.
  2. Include every REQUIRED column. Other columns are optional; drop the ones you do not use.
  3. Foreign keys are entered by NAME, not id. Put the human name and the importer resolves it: assettypeid=machine, statusid=In Use, locationid=A1, vendorid=Haas Automation. The referenced record must already exist (import lookup tables first, see order below).
  4. Booleans (isactive, etc.) are 1/0 or true/false. Leave blank for the default.
  5. Dates are YYYY-MM-DD. Leave blank if unknown.
  6. Leave a cell blank to skip it. Do not type NULL or N/A.
  7. Save as UTF-8 CSV, comma-separated. ASCII only (no smart quotes, no em-dashes).

Import order (dependencies first)

assetstatuses, assettypes, locationtypes, modeltypes, computertypes, machinetypes, businessunits, locations, vendors, models, operatingsystems, assets, computers, machines.

An asset row must exist before its computers/machines subtype row: the subtype links back with assetid (the asset's assetnumber).

Columns (REQUIRED in bold)

  • assetstatuses: status, description, color, isactive
  • locationtypes: locationtype, description, color, isactive
  • modeltypes: modeltype, category, description, icon, isactive
  • computertypes: computertype, description, icon, color, isactive
  • machinetypes: machinetype, description, icon, color, isactive
  • businessunits: businessunit, code, description, parentid, isactive
  • locations: locationname, building, floor, room, description, locationtypeid, parentlocationid, isactive
  • vendors: vendor, description, website, supportphone, supportemail, notes, isactive
  • models: modelnumber, modeltypeid, vendorid, description, notes, isactive
  • operatingsystems: osname, osversion, architecture, endoflife, isactive
  • assets: assetnumber, assettypeid, name, serialnumber, gaugelabreference, maintenancereference, statusid, locationid, businessunitid, notes, isactive
  • computers: assetid, computertypeid, hostname, osid, vendorid, modelnumberid, loggedinuser, isactive
  • machines: assetid, machinetypeid, vendorid, modelnumberid, requiresmanualconfig, islocationonly, lastmaintenancedate, nextmaintenancedate, maintenanceintervaldays, controllervendorid, controllermodelid, isactive

Measuring tools are assets: add an assets row with assettypeid=measuring_tool.

Example (assets.csv)

assetnumber,name,serialnumber,assettypeid,statusid,locationid
MILL-01,Haas VF-2 Mill,SN1001,machine,In Use,A1
PC-01,Shopfloor PC 01,SN2001,computer,In Use,B1
MIC-01,Mitutoyo Micrometer,SN3001,measuring_tool,In Use,Gage Lab

Then machines.csv links the machine subtype:

assetid,machinetypeid,vendorid
MILL-01,Mill,Haas Automation

Azure and Thor exports (do NOT edit)

For Azure (Entra device-group) and Thor (PC inventory) files, upload the export AS-IS. The importer auto-detects them by their header and extracts the fields it needs. Do not rename headers, reorder columns, add/remove rows, or reformat cells. Editing the export breaks auto-detection.