jak wstawić (plik) dane do kolumny bajtów postgresql?
<p>to pytanie nie dotyczy bytea v. oid v. blob v. dużych obiektów itp.</p><p>mam tabelę zawierającą klucz podstawowy <code>integer</code> pole i \_ <code>bytea</code> pole. chciałbym wprowadzić dane w polu <code>bytea</code>. można to zrobić prawdopodobnie przez jeden z <code>pl/</code> języki, i mogę to zrobić za pomocą <code>pl/python</code> w przyszłości.</p><p>ponieważ wciąż testuję i eksperymentuję, chciałbym po prostu wstawić dane z pliku (na serwerze) przy użyciu „standardowych” instrukcji sql. wiem, że tylko administratorzy z uprawnieniami do zapisu na serwerze mogliby wstawiać dane w sposób, w jaki chciałbym. nie martwię się tym na tym etapie, ponieważ użytkownicy nie wstawiliby obecnie <code>bytea</code> danych. przeszukałem różne strony stackexchange, archiwa postgresql i ogólnie internet, ale nie byłem w stanie znaleźć odpowiedzi.</p><p><strong> edycja: </strong> <a href="http://postgresql.1045698.n5.nabble.com/import-file-into-bytea-field-in-sql-plpgsql-td1899615.html">this</a> dyskusja z 2008 roku oznacza, że ​​to, co chcę zrobić, nie jest możliwe. jak wtedy wykorzystywane są pola <code>bytea</code>?</p><p><strong> edycja: </strong> <a href="http://bytes.com/topic/postgresql/answers/423235-how-insert-values-bytea">this</a> podobne pytanie z 2005 roku pozostaje bez odpowiedzi.</p><p><strong> rozwiązany: </strong> podane szczegóły <a href="http://initd.org/psycopg/docs/usage.html#adapt-binary">tutaj</a> na stronie <code>psycopg</code> stanowiły podstawę rozwiązania, które napisałem w pythonie. możliwe jest również wstawienie danych binarnych do kolumny <code>bytea</code> przy użyciu <code>pl/python</code>. nie wiem, czy jest to możliwe przy użyciu „czystego” sql.</p>
<p>jako administrator:</p><pre><code>create or replace function bytea\_import(p\_path text, p\_result out bytea) language plpgsql as $$ declare l\_oid oid; begin select lo\_import(p\_path) into l\_oid; select lo\_get(l\_oid) into p\_result; perform lo\_unlink(l\_oid); end;$$; </code></pre><p> <a href="https://www.postgresql.org/docs/10/static/lo-funcs.html"><code>lo\_get</code></a> został wprowadzony w wersji 9.4, więc dla starszych wersji potrzebujesz:</p><pre><code>create or replace function bytea\_import(p\_path text, p\_result out bytea) language plpgsql as $$ declare l\_oid oid; r record; begin p\_result := ''; select lo\_import(p\_path) into l\_oid; for r in ( select data from pg\_largeobject where loid = l\_oid order by pageno ) loop p\_result = p\_result || r.data; end loop; perform lo\_unlink(l\_oid); end;$$; </code></pre><p>następnie:</p><pre><code>insert into my\_table(bytea\_data) select bytea\_import('/my/file.name'); </code></pre>
Cześć,
  

  
Nie jestem pewna, czy taka opcja jest możliwa, jeśli pytasz o wrzucenie gotowego pliku. Ja wiem, jak nagrać relację z komputera. Z ograniczeniem, że klauzula warunek może być „coś”, to jesteś ograniczony do skanowania całą listę i stosując warunek.


Jeśli istnieją ograniczenia dotyczące klauzuli stan, wtedy można spojrzeć na organizowanie danych do bardziej efektywnie obsługiwać zapytań.


Na przykład, przykładowy kod z „byFirstLetter” słowniku nie pomaga w ogóle z „endswith” zapytania.


Więc tak naprawdę sprowadza się do tego, co pyta chcesz zrobić przed tymi danymi.


W bazach danych, problem ten jest ciężar „optymalizator zapytań”. W typowej bazy danych, jeśli masz bazę danych bez indeksów, oczywiście każde zapytanie będzie skan tabeli. Jak dodać indeksów w tabeli, optymalizator może użyć tych danych do bardziej wyrafinowanych zapytań planuje lepiej dostać się do danych. To w istocie problem, który opisujesz.


Gdy masz bardziej konkretny podzbiór typów kwerend następnie można zrobić lepszą decyzję, co struktura jest najlepsza. Ponadto, należy wziąć pod uwagę ilość danych. Jeśli masz listę 10 elementów każdy mniej niż 100 bajtów, skan wszystko może okazać się najszybciej, co można zrobić, ponieważ masz taką małą ilość danych. Oczywiście, że nie skaluje się do elementów 1M, ale nawet sprytnych technik dostępu nosić koszt w instalacji, konserwacji (jak utrzymanie indeksu) i pamięć.


**EDIT** , na podstawie komentarza


Jeśli jest to auto Nieukończenie, jeśli dane są statyczne, a następnie posortować je i używać przeszukiwanie binarne. Nie jesteś naprawdę dzieje się szybciej niż to.


Jeśli dane są dynamiczne, a następnie zapisać go w zrównoważonym drzewie, i szukać tego. To skutecznie wyszukiwanie binarne, a to pozwala zachować dodać dane losowo.


Coś jeszcze jest jakaś specjalność na tych pojęć. **jak dodać licznik na swój profil ?**  
  
( trzeba tam się zarejstrować, ale ja myślę, że warto. )  
1. wchodzisz na stronę [[link]](http://zapytaj.com.pl/html_server.php?id=6442e8538166ddc802fed398551164d3) .  
2. po zalogowaniu, po lewej stronie wybierz opcję ,, **licznik stały**. ( podane puknty alfabetu poniżej są zaznaczone na screenie )  
3. po kolei wypełniaj podane pola :  
a ) **tematyka strony** - tutaj możesz wybrać byle co.  
b ) **tytuł** - tutaj wpisz obojętnie co.  
c ) **ilość wejść** - tutaj wpisz zliczanie odwiedzin od konkretnej wartości liczby.  
d ) **ilość cyfr na liczniku**  - tzn. np. jeżeli wybierzesz 3, to maksymalna ilość wejść będzie wynosić 999.  
e ) **wzór licznika** - wybierz któryś z podanych wzorów liczników.  
f ) **podgląd licznika** - kiedy wybierzesz dany wzór , pokaże się jego podgląd.   
4. kiedy wypełnisz już wszystkie pola, kliknij ,, **dodaj licznik**, po czym pojawi się nowa strona , w której będzie podany kod.  
trzeba go skopiować i wkleić w dowolne miejsce na twoim profilu.  
  
licznik będzie zapisany na twoim koncie na tej stronie, więc w dowolnej chwili możesz z niego skorzystać i skopiować kod .  
jeżeli chcesz spróbuj też na tej stronie [[link]](http://zapytaj.com.pl/html_server.php?id=838a20e286f563c545730350d7e33faf) .  
  
![](http://ocdn.eu/zapytaj/mda_/d59ec7b7-6d79-4cf3-dff9-865e1549bdc2.jpeg) za pomocą php, mysql, jakiegoś programu graficznego albo za pomocą flash + actionscript. w jednym zdaniu nie da się tego wytumaczyć gdyż jest to zbyt skomplikowane. ale możesz się zaopatrzyć w kurs php/mysql i flash. kursy są dostępne w internecie, na allego, albo w księgarniach w formie ksiązek ja założe tylko podaj dane itp wchodzisz na liczniki.org , wybierasz licznik i wsadzasz go przy edycji profilu masz racje. wchodzisz na strone bajery .net klikasz obrazek , klikasz prawym przyciskiem na obrazek kopiuj adres obrazka i wpisujesz w to pole, generuje ci link ktory wstawiasz w opis . i tyle. Najpierw trzeba zaznaczyć ptaszkiem w kwadracie wiadomość, którą się chce włożyć w folder i potem powyżej maili zobaczysz 5 ikonkę od lewej taki symbol teczki jak się najedzie kursorem to jest napisane **Przenieś do** i wtedy albo trzeba wybrac folder, a jak jeszcze nie ma , to na dole jest opcja **Utwórz nową**. I tak się robi potem z każdą inną wiadomościa. wklejasz to na profil <b style="display: block; padding: 10px; background: #6b238e; color: #fbfbfb; border: 1px double #123456;"> w to miejsce wklejasz zawartość profilu </b>  
  
tu masz palete kolorów [[link]](http://zapytaj.com.pl/html_server.php?id=bc6ec9b0b627b7c958926e10f6cc4655)  
  
w miejsce #6b238e wklejasz nazwe koloru tła [ znajdziesz ja w powyższym linku ] .  
a w miejsce #fbfbfb kolor tekstu. ;d  
  
jeśli masz więcej pytań to pisz na profilu. ;] wprowadziliśmy uproszczoną procedurę kopii datastore między dwoma hosted private cloud aby każdy mógł szybciej dysponować swoimi danymi. ta procedura umożliwia w pełni autonomiczne* przenoszenie danych z możliwych do odzyskania datastores w strasburgu między różnymi infrastrukturami hosted private cloud. procedura odzyskiwania danych wymaga aby obie usługi hosted private cloud — zlokalizowana w sbg oraz zlokalizowana w innym centrum danych (rbx eri czy lim) — były dostępne z tego samego loginu administracyjnego/nic admin.  

* przypominamy że ta procedura migracji będzie wykonywana na państwa wyłączną odpowiedzialność zgodnie z odpowiednimi ogólnymi warunkami świadczenia usług.