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 16:44 | Zajímavý článek

Bylo vydáno 2. číslo magazínu NODE věnovanému zajímavým open source softwarovým a hardwarovým projektům. Elektronická verze ve formátu pdf (180 stránek, 98,5 MiB) je volně k dispozici. Tištěnou verzi lze do zítra 3. července předobjednat za £18.50.

Ladislav Hagara | Komentářů: 0
dnes 15:11 | Komunita

Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu aktuálně činí 0,88 %. Nejčastěji používanou linuxovou distribucí je Ubuntu 20.04 LTS 64 bit. Přehled her oficiálně podporujících SteamOS a Linux na stránkách Steamu. Přehled her pro Windows běžících na Linuxu díky Protonu na stránkách ProtonDB.

Ladislav Hagara | Komentářů: 1
dnes 14:00 | Nová verze

Bylo vydáno openSUSE Leap 15.2. Přehled novinek v nejnovější verzi této linuxové distribuce v do češtiny přeloženém oznámení o vydání a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
dnes 12:44 | Nová verze

Apache Guacamole, řešení pro vzdálený přístup k počítačům pomocí protokolů VNC, RDP a SSH z webového prohlížeče, bylo vydáno ve verzi 1.2.0. Přehled novinek v oficiálním oznámení. Zdůraznit lze podporu SAML 2.0, Wake-on-LAN, nové rozhraní pro přepínání mezi sezeními nebo překlad webového rozhraní do češtiny.

Ladislav Hagara | Komentářů: 0
včera 22:55 | Komunita

Nadace Raspberry Pi oznámila, že OpenVX 1.3 API lze nově používat také na Raspberry Pi. OpenVX je standard pro akceleraci aplikací počítačového vidění. Vyzkoušet lze ukázkové příklady.

Ladislav Hagara | Komentářů: 0
včera 22:11 | Zajímavý článek

Možná jste taky někdy zápasili s tiskem formulářů nebo šablon, které pořád ne a ne vyjít ve správné velikosti. Článek Tisk v přesném měřítku (PDF, PPD, CUPS) popisuje příběh hledání jedné takové chyby v GNU/Linuxu.

xkucf03 | Komentářů: 7
včera 08:00 | Nová verze

Byla vydána nová verze 4.8 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl aktualizován na verzi 9.5.1. Thunderbird na verzi 68.9.0. Linux na verzi 5.6.0. Opravena byla řada bezpečnostních chyb.

Ladislav Hagara | Komentářů: 1
30.6. 23:11 | Zajímavý projekt

Na Kickstarteru byla spuštěna kampaň na podporu tabletu CutiePi postaveného na Raspberry Pi, konkrétně na Compute Module 3+ Lite. Předobjednat jej lze za 198 dolarů. Expedice je plánována na listopad.

Ladislav Hagara | Komentářů: 4
30.6. 22:11 | Zajímavý článek

Na serveru Techrights.org vyšel článek The GNU Project is Bleeding Into Microsoft, který upozorňuje na podezřele se množící případy projektů, které jsou přesměrované z webových stránek GNU na GitHub (proprietární software a služba provozovaná Microsoftem). Článek poukazuje i na to, že k řadě přesměrování došlo po tom, co byl Richard Stallman (zakladatel hnutí GNU a nadace FSF) „vyhnán“ z vedení FSF (resp. odstoupil po agresivní

… více »
xkucf03 | Komentářů: 65
30.6. 18:00 | Komunita

Projekt KDE přešel na GitLab. Vlastní instance již běží na invent.kde.org. Další info v příspěvku na blogu GitLabu. Před dvěma lety byl na GitLab přesunut vývoj GNOME.

Ladislav Hagara | Komentářů: 5
Používáte některé open-source řešení [protokol] pro šifrovaný instant messaging?
 (23%)
 (30%)
 (5%)
 (11%)
 (18%)
 (6%)
 (13%)
 (26%)
Celkem 288 hlasů
 Komentářů: 32, poslední 28.6. 17:51
Rozcestník

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

19.4. 17:24 Martin
Postgresql - text - utf8 - \r \n \t ...
Přečteno: 157×
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

Gréta avatar 19.4. 21:16 Gréta | skóre: 24 | blog: Grétin blogísek | Stockholm
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

✊3 things to learn in skiing: •how to put on your skis •how to slide downhill •how to walk along the hospital corridor✊
20.4. 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. 06:57 okbobcz
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. 05:42 okbobcz
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. 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. 07:42 okbobcz
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. 07:43 okbobcz
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. 07:45 okbobcz
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áknoNahoru

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.