Det er mange bedrifter eller utviklere ønsker seg å ha egen kunde table som er basert på fersk alle enhetsregisteret organisasjoner fra kjernen til Brønnøysundregistrene. Jeg fant og laget en løsning på det, hvor hele prosessen er fullstendig automatisert, det vil si uavhengig av mennesker. Hvis du følger alle trinnene da er du snart har egen kunde/bedrift tabell som du kan bruke til ditt behøv innen utvikling eller kundeportalen. Prosessen er automatisert og henter data hver natt kl. 05:30, fordi fersk data eller filen produserer hos brreg.no sirka kl. 05:00.
MERK: Før du begynner, må du kanskje angi følgende verdier nedenfor i MySQL my.cnf -filen, slik at du ikke får noen feilmeldinger når du legger til data i MySQL, og installerer jq jnson.
Finn my.cnf ved å kjøre under kommandoen og redigere den:
mysql --help | grep "Default options" -A 1
Og legg deretter til som følgende koder nedenfor:
[mysqld] local-infile=1 secure_file_priv="" sql_mode="" [mysql] local-infile=1
Start deretter MySQL -tjenesten på nytt:
systemctl restart mysql
Installere jq json:
sudo apt-get install jqLa oss komme i gang!
1. Opprette kunder mappa
mkdir /home/kunder cd /home/kunder
2.Opprette Bash Script filen database.sh som vil lage database og tabeller automatisk
touch database.sh chmod +x database.sh nano database.sh
3. Kopier følgende koder under og lim den inn og kjør filen (./database.sh) for å begynne å lage database og tabeller. Du trenger bare å kjøre den en gang, så kan du slette den etterpå
#!/bin/bash : ' * @author [Hawar Koyi] * @email [hawar.koy@gmail.com] * @email [post@hawar.no] * @create date 2021-08-25 20:18:00 * @desc [Automatisk - Hent fersk organisasjon/bedriftsdetaljer hos Brønnøysundregistrene] ' mysql << EOF use mysql; CREATE DATABASE IF NOT EXISTS Kunder; USE Kunder; CREATE TABLE IF NOT EXISTS Kunderdetaljer ( Organisasjonsnummer INT NOT NULL, Navn VARCHAR(100) NOT NULL, Organisasjonsform_kode VARCHAR(45) NULL, Organisasjonsform_beskrivelse VARCHAR(255) NULL, Naeringskode DECIMAL(5,3) NULL, Nearing_beskrivelse VARCHAR(255) NULL, Land VARCHAR(45) NULL, Landkode VARCHAR(5) NULL, Adresse VARCHAR(45) NULL, Postnummer SMALLINT NULL, Poststed VARCHAR(20) NULL, Kommune VARCHAR(20) NULL, Kommunenr SMALLINT NULL, Institusjonell_sektorkode SMALLINT NULL, Institusjonell_beskrivelse VARCHAR(255) NULL, primary key (Organisasjonsnummer) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; EOF
4. Opprette Bash Script filen kunder_til_database.sh Dette skriptet bruker til å kontakte Brønnøysundregistrene, altså brreg.no datacenter for å laste ned organisasjoner data som .json, deretter konvertere det til .csv og sende det til databasen.
Alle oppgaver utføres automatisk av skriptet, og du trenger bare å kjøre det for første gang, deretter gjør trinn 6 hvor den tar hele jobben etterpå, da henter og lager fersk hver natt kl. 05:30
touch kunder_til_database.sh chmod +x kunder_til_database.sh nano kunder_til_database.sh
5. Kopier Bash Script -koden under og kjør den (./kunder_til_database.sh)
#!/bin/bash : ' * @author [Hawar Koyi] * @email [hawar.koy@gmail.com] * @email [post@hawar.no] * @create date 2020-08-25 19:42:19 * @desc [Automation - Hente fersk organisasjonsdetaljer for hele landet] ' #Kunder directory Kunder_directory="/home/kunder/" #Function to reset CLI color to default white default-color() { echo -e "\e[0m" } #Kunder function get_enheter_alle () { #API to get kunder and save it as enheter_alle.json kunder_json=$(curl 'https://data.brreg.no/enhetsregisteret/api/enheter/lastned' \ -X GET -H "Accept: application/vnd.brreg.enhetsregisteret.enhet.v1+gzip;charset=UTF-8" -J -O && gzip -df enheter_alle.json.gz) #Convert enheter_alle.json to enheter_alle.csv kunder_list_csv=$(jq -r ' .[] | [.organisasjonsnummer, .navn, .organisasjonsform.kode, .organisasjonsform.beskrivelse, .naeringskode1.kode, .naeringskode1.beskrivelse, .forretningsadresse.land, .forretningsadresse.landkode, .forretningsadresse.adresse[0], .forretningsadresse.postnummer, .forretningsadresse.poststed, .forretningsadresse.kommune, .forretningsadresse.kommunenummer, .institusjonellSektorkode.kode, .institusjonellSektorkode.beskrivelse] | @csv' "$Kunder_directory"enheter_alle.json > "$Kunder_directory"enheter_alle.csv) } #End of enheter_alle #Call get_enheter_alle function get_enheter_alle #Database #Change schema and infile location if needed mysql << EOF use Kunder; -- Truncate Kunderdetaljer table and re-add data again truncate table Kunderdetaljer; LOAD DATA local INFILE "/home/kunder/enheter_alle.csv" into table Kunderdetaljer fields terminated by',' ENCLOSED BY '"' lines terminated by'\n' (Organisasjonsnummer, Navn, Organisasjonsform_kode, Organisasjonsform_beskrivelse, Naeringskode, Nearing_beskrivelse, Land, Landkode, Adresse, Postnummer, Poststed, Kommune, Kommunenr, Institusjonell_sektorkode, Institusjonell_beskrivelse); EOF #End of Bash Script
6. Legg kunder_til_database.sh til cronjob for å få automatiske nye data (hver natt kl. 05:30 min) fra Brønnøysundregistrene (data.brreg.no) og videresende til databasen for å få ferske data.
crontab -e */30 5 * * * /bin/bash /home/kunder/kunder_til_database.sh >/dev/null 2>&1
Tillegg: Se videoen min nedenfor hvis du kan ikke figure det
Enjoy it, and like it if you want too Linkedin