Autor | Zpráva | ||
---|---|---|---|
JosPol Profil |
#1 · Zasláno: 4. 12. 2017, 19:09:26
Dobrý den,
řeším problém s importem csv do sql. Uvozovky, které uzavírají textové řetězce (ENCLOSED BY '"') jsou obsaženy v textu samotném. Při importu běžným způsobem uvedeným níže, jsou uvozovky obsaženy v textu brány, jako oddělovače a import se pak provede chybně. Hodnoty nesedí na sloupce. QUERY load data local infile 'test.csv' into table tabulka_cz CHARACTER SET utf8 FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES terminated by '\n' OBSAH CSV ID,TEXT, HODNOTA A 25;"Název: "Jan Novák" abcd";1 Csv obsahuje více sloupců. Umíte s tím někdo poradit? Děkuji |
||
Keeehi Profil |
#2 · Zasláno: 4. 12. 2017, 22:34:08
JosPol:
Tohle totiž není validní CSV soubor. Validní by vypadal takto: ID,TEXT, HODNOTA A 25;"Název: ""Jan Novák"" abcd";1 Uvozovky uvnitř stringu se v csv escapují tak, že jsou hned dvě za sebou. Oprav to a zkus to s validním CSV souborem. |
||
JosPol Profil |
#3 · Zasláno: 4. 12. 2017, 23:12:48
Keeehi:
Pokud bych to dokázal opravit, tak bych zde zbytečně neptal. Data nám byla tak dodána. Zkouším, zda už někdo něco podobného řešil. Malá úvaha1: Ideálně importovat data od prvního až po chybný sloupec, například první 3 sloupce (4 je chybný). A následně importovat data z konce řádku, kde víme, že 5 sloupců za chybným je sprvně. Tedy importovat od konce. Vše do samostaných tabulek a pak sloučit. To si ale nemyslím, že to sql umí. Malá úvaha2: Php skript na import, který řekne, že pokud je uvozovka, následuje ji, či předchází středník. Jsem lajk, tak budu rád za support. Díky moc |
||
Kajman Profil |
Pokud to nechcete parsovat, tak by šlo ještě udělat postupně náhrady.
" za "" ;"" za ;" ""; za "; Edit: pokud už v původním textu budou uvnitř textů vedle sebe středník a uvozovky, nemusí to být korektní řešení. |
||
JosPol Profil |
#5 · Zasláno: 5. 12. 2017, 11:21:02
Kajman:
Nejjednoduší řešení, které mě nenapadlo. Díky moc! |
||
Časová prodleva: 6 let
|
0