I've never created a transformation/import script that worked right the first time - which makes me happy! These scripts reflect your assumptions and understanding of your data and if you've goofed up, you'll know!
Here's the final, fixed script:
drop schema if exists enceladus cascade;create schema enceladus;set search_path='enceladus';create table inms( id serial primary key, created_at timestamp not null, date date not null generated always as (created_at::date) stored, year int not null generated always as (date_part('year', created_at)) stored, flyby_id int references flybys(id), altitude numeric(9,2) not null check(altitude > 0), source text not null check(source in('osi','csn','osnb','esm')), mass numeric(6,3) not null check(mass >=0.125 and mass < 256), high_sensitivity_count int not null check(high_sensitivity_count >= 0), low_sensitivity_count int not null check(low_sensitivity_count >= 0), imported_at timestamptz not null default now());update inmsset flyby_id = flybys.idfrom flybys where flybys.date = inms.date;create table chemistry( id serial primary key, name text not null, formula text not null, molecular_weight int not null, peak int not null);copy chemistry(name, formula,molecular_weight, peak) from '[Absolute path to]/csvs/chem_data.csv'with delimiter ',' header csv;