Scripted scene building - where to begin?
This might get you started


BlendData.libraries
csv




import bpy
import csv

file_csv = ".../layout.csv"
file_components = ".../components.blend"

with open(file_csv, newline='') as fobj:
    reader = csv.reader(fobj)
    layout_table = list(reader)

required = set(col[1] for col in layout_table)

with bpy.data.libraries.load(file_components, link=True) as (data_from, data_to):
    available = set(data_from.meshes)
    missing = required - available
    data_to.meshes = list(required &amp; available)

if missing:
    txt = bpy.data.texts.new("missing_components.txt")
    for comp in missing:
        txt.write(comp + "\n")

objects_data  = bpy.data.objects
objects_scene = bpy.context.scene.objects
name_to_index = {mesh.name: index for index, mesh in enumerate(data_to.meshes)}

def create_dupli(id, name, location):
    try:
        mesh = data_to.meshes[name_to_index[name]]
    except KeyError:
        return

    dupli = objects_data.new(id, mesh)
    dupli.location = location
    objects_scene.link(dupli)

for id, name, x, y, z in layout_table:
    loc = tuple(float(val) for val in (x, y, z))
    create_dupli(id, name, loc)