Crea DB e schema

  1. Aggiunto il percorso dell’executable PostgreSQL alla variabile PATH (tramite interfaccia, aggiungi il percorso dove c’è l’executable, cioè la cartella C:\Program Files\PostgreSQL\16\bin, alla variabile “Path” delle variabili di ambiente relative al sistema). Altrimenti, prima di eseguire i comandi per usare PostgreSQL puoi eseguire il seguente comando (mandato da CMD, su C:/Users/media); però questo comando, se non hai aggiunto il percorso di PostgreSQL alla variabile di sistema devi mandarlo ogni volta che usi PostgreSQL.

    set PATH=%PATH%;C:\\Program Files\\PostgreSQL\\16\\bin
    
  2. Accedi all’executable e manda il seguente comando, che crea un database chiamato “mm_openalex_records”:

    C:\\Users\\media>
    cd C:\\Program Files\\PostgreSQL\\16\\bin
    
    C:\\Program Files\\PostgreSQL\\16\\bin>
    createdb -h localhost -U postgres mm_openalex
    
  3. Creato il database, esegui lo script .sql scaricato dalla repo di OurResearch (forkata e clonata appositamente, la trovi su Desktop/openalex). Il comando, lanciato con CMD da C:/Users/media, è il seguente:

    C:/Users/media>
    psql -h localhost -U postgres -d mm_openalex -f "C:\\Users\\media\\Desktop\\openalex\\openalex-documentation-scripts\\openalex-pg-schema.sql"
    

Converti i files JSON-L in CSV piatti

(.venv) C:\\Users\\media\\Desktop\\openalex>python openalex-documentation-scripts\\[flatten-openalex-jsonl.py](<http://flatten-openalex-jsonl.py/>)

Popola il DB

Per connetterti al DB usa:

psql -U postgres -d mm_openalex

inserisci password: kokomo

così sei entrato nella shell psql e connesso al DB.

Fondamentale (da riordinare)

  1. Il primo step è aprire CMD e accedere alla cartella dove hai i dati con i full records dei multi mapped. La struttura interna di questa cartella deve rispecchiare la struttura implicata nei file per costruire il database, ovviamente. Direttamente sotto la cartella deve esserci il file copy-openalex-csv.sql. Inoltre, deve esserci una cartella sources che contiene i files (per ora in formato .part) con i full records delle sources, e una cartella works con i full records dei works. Ci deve essere una cartella mm-full-records-csv-files (esattamente così, perché il percorso è specificato nello script sql che popola il DB) che contiene i file csv normalizzati dallo script flatten-openalex-jsonl.py. Fai attenzione ad usare gli script giusti: ho adattato i file fatti da OurResearch affinché il processo crei dei file non compressi, da cui le righe vengono prese e inserite nel DB. Il file sql che crea lo schema (openalex-pg-schema.sql) è l’unico rimasto inalterato.

  2. Dalla cartella dove ci sono i dati, manda un comando come il seguente:

    psql -U postgres -d mm_openalex
    

    TI chiede di inserire la password per l’utente postgres (specificato con il parametro -U), che è il superuser (l’unico user a meno che non ne crei altri). Se inserisci la pw giusta sei automaticamente connesso al DB “mm_openalex”, specificato con il parametro -d.

  3. Ora i file funzionano bene (bisogna solo stare attenti a specificare i percorsi corretti). È fondamentale però che, quando usi psql in CMD, l’encoding del database (server) sia lo stesso che viene usato nel client; altrimenti ti dà errori come il seguente quando cerchi di aggiungere le tabelle CSV al database:

    mm_openalex=# \\i copy-openalex-csv.sql
    psql:copy-openalex-csv.sql:31: ERRORE:  il carattere con sequenza di byte 0x81 nella codifica "WIN1252" non ha un equivalente nella codifica "UTF8"