Dneska migruji jednu databázi z MySQL do Oracle přes CSV soubory pomocí oraklovského nástroje SQL*Loader. V CSV souborech je několik nečistot, které jsem musel odstranit a jedna taková specialitka. SQL*Loader neumí (resp. já nevím jak to nastavit) načíst textové hodnoty obsahující zařádkování. Takže je potřebuju vyházet, jenže MySQL při exportu do CSV dělá zařádkování jako \LF (tedy lomítko a zařádkování). Sedem jsem se toho nemohl zbavit – protože pracuje implicitně po řádcích. Ten magický příkaz nahrazení dané kombinace mezerou (a spojením řádků v jeden) tedy je (tuhle magii jsem vygooglil a netuším, proč to funguje):
# sed -e :a -e '$!N;s/\\\n/ /;ta' -e 'P;D'
Diskuze