This is very lazy and crude way to convert and work with wikipedia dumps.
- bash
- python3
- docker
- docker-compose
- mariadb-client
Instalace mariadb klienta na ubuntu:
sudo apt install mariadb-client
Pozor zatím to funguje jen pro externallinks tabulku.
Stačí pustit script run.sh
který nastartuje kontejner s databází, stáhne nový dump file a převede ho, do seznamu semínek. Script potřebuje heslo k databázi jako první parametr.
Pozor, pokud kontejner už běží tak bude smazán.
./run.sh example_password
Script nakonec vygeneruje dva soubory semínek. out.seeds.txt
obsahuje vše tak jak to bylo v dump souboru. sorted.seeds.txt
obsahuje setříděná semínka zbavená duplikátů.
git pull
stáhne repozitář.
Teď je dobré změnit heslo v docker-compose.yml
. Případně odkomentovat nastavení pro adminer, ale nebude nutné pro automatické vytváření semínek.
Pro spuštění docker kontejnerů stačí použít script start.sh.
./start.sh
Pokud ještě nemáš stažený dump soubor, tak ho můžeš stáhnout pomocí:
curl -O -L požadovaná_url
Pokud má soubor příponu .gz pak pusť:
gunzip cesta_k_souboru
Výsledkem by měl být .sql soubor.
Teď vytvoř novou databázy, do které pak nahrajeme data. example nahraď správným heslem.
mariadb --port=3306 --protocol=tcp --user=root --password=example --execute="create database wiki;"
Teď naimportujeme sql soubor do databáze.
mariadb --port=3306 --protocol=tcp --user=root --password=example --database=wiki < cesta_k_souboru
Vyexportujeme data v csv formátu pomocí předpřipraveného sql scriptu.
mariadb --port=3306 --protocol=tcp --user=root --password=example --database=wiki < export_csv
Přesuneme exportovaný soubor z kontejneru do aktuálního adresáře.
docker cp $( docker ps -qf "name=db" ):/var/lib/mysql/externallinks.csv .
Vygenerujeme seznam semínek pomocí scriptu seeds_from_csv.py
python3 seeds_from_csv.py
Varování! Pokus otevřít daný soubor ve VS Code může mít za následek crash minimálně samotného editoru. Pro pohdlné čtení souboru je nejlepší použít less či jiný pager.
# Open sql shell
mariadb --port=3306 --protocol=tcp --user=root --password=example --database=wiki