Opmaak tekstbestanden voor import
Versie door Jeroen Strompf (overleg | bijdragen) op 6 dec 2018 om 11:33
Regelmatig krijg ik gegevens aangeleverd in spreadsheet-formaat, die ik importeer in een MySQL-datawarehouse. Handig om deze import zo consistent mogelijk te doen. Daar gaat dit artikel over:
Algemeen
- Meestal gebruik ik LibreOffice Calc als middleware om de aangeleverde data (meestal Excel-sheets, soms Calc-sheets) te converteren naar csv- of tsv-formaat
- Gebruik altijd UTF-8 voor karaktercodering
- Import in MySQL gaat middels SQL-scripts - Het LOAD DATA-commando kan niet uitgevoerd worden vanuit sprocs. Wellicht dat Python of LOAD_DATA interessante alternatieven zijn.
Casus: Productgegevens in Calc (okt. 2018)
Instellingen LibreOffice Calc
- Character set: UTF8
- Field delimeter: {Tab}
- Text-delimeter: Geen
Opmerkingen
- Extensie wordt vanzelf csv, ook al betreft het eigenlijk een tsv-bestand: Calc plaatst er altijd .csv achter
- Als je wel een text-delimeter gebruikt, en dat karakter komt voor in de bestand (bijvoorbeeld "), dan wordt dat geëscaped ofzo - Vragen om problemen!
- Cijfers met voorloopnullen, worden geïmporteerd als text - Precies wat de bedoeling is (bv. een artikelnummer zoals '0100' moet '0100' blijven, en niet het getal '100' worden)
Import MySQL
Bijbehorende instellingen voor import in MySQL:
load data local infile "/tmp/02.csv" into table import_tmp character set utf8 fields terminated by '\t' enclosed by '' lines terminated by '\n' ignore 1 rows; # Afhankelijk van de inhoud van het bestand, niet de opmaak
Casus: Productgegevens in Excel voor toewijzing EAN-codes (dec. 2018)
- Ik open het bestand in LibreOffice Calc. Ik kopiëer alle gegevens
- In een nieuw rekenblad plak ik de gegevens middels Paste special... om opmaak en formules te elimineren