abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 10:22 | Pozvánky

    Byl zveřejněn průběžně aktualizovaný program konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Konference proběhne o víkendu 7. a 8. listopadu v prostorách FIT VUT v Brně. Vstup je zdarma.

    Ladislav Hagara | Komentářů: 0
    dnes 08:08 | Zajímavý článek
    Nepálský ISP WorldLink Communications popisuje sedm let zavádění IPv6. Dnes provozuje přes milion IPoE přípojek, všechny s podporou IPv6, a přibližně 70 % provozu přenáší přes IPv6.… více »
    vencour | Komentářů: 1
    dnes 02:11 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 7.2 oznámil Linus Torvalds vydání Linuxu 7.3. Podrobný přehled novinek a vylepšení na Linux Kernel Newbies nebo LWN.net: první a druhá polovina začleňovacího okna.

    Ladislav Hagara | Komentářů: 0
    včera 23:39 | Bezpečnostní upozornění
    Zjištěna zranitelnost v kernelu projevující se při virtualizaci. Nejde tedy o chybu samotného KVM ani konkrétního poskytovatele cloudu, ale o problém v linuxovém zpracování IPv4 paketů, který se může týkat různých virtualizačních a sandboxových prostředí. Více např. na hacker.news - Critical PwnEscape Linux Kernel Vulnerability Lets Guest VMs Read Host Memory. Aktualizace jsou k dispozici.
    vencour | Komentářů: 0
    včera 23:38 | Bezpečnostní upozornění
    Malware napsaný v Go se šíří mezi linuxovými systémy, pokouší se získávat SSH klíče a využívá kompromitované stroje pro těžbu kryptoměn. Autor použil FakeNet-NG a Wireshark k analýze síťové komunikace. Popsal také indikátory kompromitace a možnosti obrany. Zajímavé je propojení SSH bezpečnosti, analýzy síťového provozu a detekce prostřednictvím SIEM. více
    vencour | Komentářů: 0
    16.10. 15:55 | Nová verze

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 9.00. S podporou architektury AArch64 (ARM64).

    Ladislav Hagara | Komentářů: 0
    16.10. 03:44 | IT novinky

    Společnost Fairphone stojící za stejnojmennými mobilními telefony představila (pdf) bezdrátová špuntová sluchátka Fairbuds 2. Opravitelná, s vyměnitelnými bateriemi a tříletou zárukou. Cena 119 eur.

    Ladislav Hagara | Komentářů: 16
    16.10. 03:33 | Pozvánky

    O víkendu 17. a 18. října lze na brněnském výstavišti navštívit s jednou vstupenkou dvě akce: Maker Faire Brno, festival inovací, kreativity a kutilství, a GameDev Connect, akci určenou pro všechny současné a hlavně budoucí herní vývojáře.

    Ladislav Hagara | Komentářů: 0
    15.10. 20:33 | Nová verze

    Canonical vydal (email) Ubuntu 26.10 Stonking Stingray. Přehled novinek v poznámkách k vydání. Jedná se o průběžné vydání s podporou 9 měsíců, tj. do července 2027.

    Ladislav Hagara | Komentářů: 1
    15.10. 16:44 | IT novinky

    České Radiokomunikace (CRA) ve čtvrtek odstřelily rozhlasový vysílač Liblice B, dosud nejvyšší stavbu v Česku. O demolici dvou 355 metrů vysokých stožárů rozhodly z důvodu jejich nevyužívání, už v úterý přitom zhasly a demontovaly jejich osvětlení.

    Ladislav Hagara | Komentářů: 33
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2866 hlasů
     Komentářů: 32, poslední 11.10. 17:02
    Rozcestník

    Dotaz: Postgresql - text - utf8 - \r \n \t ...

    19.4.2020 17:24 Martin
    Postgresql - text - utf8 - \r \n \t ...
    Přečteno: 736×
    Dobrý den, může mi prosím někdo vysvětlit, jak vložit text (obsah souboru) v kódování utf8 do tabulky tak, aby postgres neprovedl konverzi tohoto textu ? Příklad:
    html:
    <!-- soubor v utf8, without bom -->
    <input type="text"<-- tady je CRLF
        data-sometext="ěáíýžč">
    
    sql:
    create table test (html text);
    insert into test values (pg_read_file('...'));
    select * from test;
    
    <input type="text"\r
        data-sometext="ěáíýžč">
    
    Jde o tu značku \r. Postgres prostě převede chr(13) na string \r. Týká se to i ostatních escape sekvencí. Google nepomohl. Píše se tam o convert_from(), encode(), E'\r', ale to prostě není ono. Chtěl bych, aby tam byl vložen ten soubor tak, jak je na disku. Server i client jsou encoding utf8, database má encoding=utf8, collate='C', ctype='C'. Nějak to nechápu. \t \r \n jsou přece platné znaky v utf8. Díky.

    Odpovědi

    ❗Červivý Hřib krade❗ avatar 19.4.2020 21:16 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...

    vložen ten soubor tak, jak je na disku

    hhhhmmmmmmmmmmmmmmmmmmm co ho jakoby přečíst binárně funkcí pg_read_binary_file hele a v db ho jako schovat v proměný typu bytea hele?????? :O ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    20.4.2020 06:47 Martin
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    Ano, to jsem také zkoušel. Bohužel, v okamžiku, kdy chci již naimportované bytea parsovat (regexp_replace), musím ho převést na text - a je to tam znovu. Vlastně každý převod z bytea na text končí s vloženými \r \t ...
    20.4.2020 06:57 okbobcz | skóre: 8
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    Implicitní cast z bytea do textu escapuje bílé znaky. Pokud člověk se chce vyhnout této nechtěné konverzi, tak je potřeba použít vlastní funkci:
    CREATE OR REPLACE FUNCTION public.bytea_to_text(bytea)
     RETURNS text
     LANGUAGE sql
    AS $function$
    SELECT convert_from($1, current_setting('server_encoding'))
    $function$
    
    20.4.2020 05:42 okbobcz | skóre: 8
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    K tomuhle by se pg_read_file vůbec nemělo používat. Tahle funkce je navržená pro adminy (server side) pro načítání konfiguráků. Už to, že tuto funkci může používat pouze super user signalizuje, že není navržená pro běžným uživatelem. Postgres je client-server databáze, nikoliv souborová databáze.

    Pokud potřebujete naimportovat soubor, tak pokud je v řádech kilobajtů, tak nejjednodušší je jej načíst na straně klienta, oescapovat a vygenerovat insert. nebo použít prepared statement nebo parametrized statement a pak se nemusí nic escapovat, jelikož obsah jde separátním kanálem.

    Inspiraci můžete čerpat z pgimportdoc

    Další možnost - už přes soubory je načíst soubor do Postgresu jako large Object skrze lo_import. Pak už na serveru je zkonvertovat na text nebo bytea, funkcí lo_get - ukázka. Příklad je v článku na rootu "PostgreSQL 9.4: transakční SQL JSON databáze".

    20.4.2020 07:32 Martin
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    K tomu pg_read_file - je to na serverové straně, a jsou to malé soubory, které se načtou během vytváření databáze.
    ... Pak už na serveru je zkonvertovat na text nebo bytea,
    A o tohle mi jde. Jako bytea je to ok, ale bytea nemohu převést na text -> zase tam vzniknou řetězce \r\n.
    Př.: vezmu string "Hello" + chr(13)+chr(10) + "world"
    select convert_from('\x48656c6c6f0d0a576f726c64','utf8');
    
    console: Hello\r
    world
    copy (select convert_from('\x48656c6c6f0d0a576f726c64','utf8')) to 'testfile.txt';
    
    Soubor obsahuje: Hello\r\nworld
    Díky.
    20.4.2020 07:42 okbobcz | skóre: 8
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    \r bude dost mozna jen o zobrazeni. Postgres \r interne chr(13) zobrazuje jako \r. Interne to ale nejsou dva znaky tj \ a r
    postgres=# select 'Ahoj' || chr(13) || 'Svete';
    ┌─────────────┐
    │  ?column?   │
    ╞═════════════╡
    │ Ahoj\rSvete │
    └─────────────┘
    (1 row)
    
    Kdezto
    postgres=# select 'Ahoj' || chr(10) || 'Svete';
    ┌──────────┐
    │ ?column? │
    ╞══════════╡
    │ Ahoj    ↵│
    │ Svete    │
    └──────────┘
    (1 row)
    
    Jde o to, ze Postgres nezna vyznam \r (chr(13)) a tak jej zobrazi jako \r. Postgres je Unixova databaze, tam se \r pro zalomeni nepouziva.

    Pokud se ho chcete zbavit, tak jej musite smazat.
    20.4.2020 07:43 okbobcz | skóre: 8
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    V Unixu je konec řádku \n, v Dosu \r\n. Postgres escape sekvence, které neumí interpretovat, zobrazuje.
    20.4.2020 07:45 okbobcz | skóre: 8
    Rozbalit Rozbalit vše Re: Postgresql - text - utf8 - \r \n \t ...
    Cokoliv, co vyžaduje superusera, by se pro běžnou práci nemělo používat - pg_read_file. Samozřejmě, že může jít jen o Vaši soukromou aplikaci, ale jinak je to prasárna.

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.