PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Има ли начин за зареждане на текстови данни в база данни в PostgreSQL?

Подход, който използвам с моите големи XML файлове - 130GB или по-големи - е да кача целия файл във временен нерегистриран таблица и от там извличам съдържанието, което искам. Unlogged tables не са безопасни при сривове, но са много по-бързи от регистрираните, което напълно отговаря на целта на временна таблица;-)

Като се има предвид следната таблица...

CREATE UNLOGGED TABLE tmp (raw TEXT);

.. можете да импортирате този 1GB файл с помощта на един psql линия от вашата конзола (unix)..

$ cat 1gb_file.txt | psql -d db -c "COPY tmp FROM STDIN" 

След това всичко, от което се нуждаете, е да приложите своята логика към заявка и извличане на информацията, която искате. В зависимост от размера на вашата таблица, можете да създадете втора таблица от SELECT , напр.:

CREATE TABLE t AS
SELECT 
  trim((string_to_array(raw,','))[1]) AS operation,
  trim((string_to_array(raw,','))[2])::timestamp AS tmst,
  trim((string_to_array(raw,','))[3]) AS txt
FROM tmp
WHERE raw LIKE '%DEBUG%' AND
      raw LIKE '%ghtorrent-40%' AND 
      raw LIKE '%Repo EFForg/https-everywhere exists%'

Коригирайте string_to_array функция и WHERE клауза за твоята логика! По желание можете да замените тези няколко LIKE операции към един SIMILAR TO .

.. и вашите данни ще бъдат готови за игра с:

SELECT * FROM t;

 operation |        tmst         |                               txt                                
-----------+---------------------+------------------------------------------------------------------
 DEBUG    | 2017-03-23 10:02:27 | ghtorrent-40 -- ghtorrent.rb:Repo EFForg/https-everywhere exists
(1 Zeile)

След като вашите данни бъдат извлечени, можете да DROP TABLE tmp; за да освободите малко дисково пространство;)

Допълнителна информация:COPY , PostgreSQL array functions и pattern matching




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Задаване на име_на_приложение на Postgres/SQLAlchemy

  2. Клауза Go и IN в Postgres

  3. Не може да се свърже PostgreSQL към отдалечена база данни чрез pgAdmin

  4. Как да мигрирам PostgreSQL база данни в SQLServer?

  5. Предоставяне на привилегии за конкретна база данни в PostgreSQL