PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

POSTGRES KOPIA Z PROGRAMU do dynamicznej tabeli z nieznanymi kolumnami

Ponieważ nie znasz z góry liczby/rodzajów wierszy, sugeruję, abyś zrobił to w ten sposób:

  • (1) zaimportuj plik CSV do (tymczasowej?) tabeli z pojedynczą kolumną tekstu bez dzielenia. Użyj backspace znak jako ogranicznik, dzięki czemu cały importowany wiersz pozostanie nienaruszony;
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
  • (2) uruchom zapytanie, które dzieli plik CSV na tablicę tekstową - funkcja parse_csv , a następnie użyj wynikowego zestawu tablic tekstowych zgodnie z potrzebami (być może map/wstaw do „rzeczywistej” tabeli docelowej)
WITH rawdata AS
(
 SELECT parse_csv(rawtext) arr FROM rawtext_t
) 
INSERT INTO real_t (...fields...) 
SELECT arr[1], arr[3], ...
FROM rawdata;

TRUNCATE TABLE rawtext_t;

Możesz dodać WHERE klauzula w drugim SELECT oświadczenie w celu filtrowania przychodzących wierszy, jeśli to konieczne.

Inna opcja - bardzo dobry w moim rozumieniu - jest użycie doskonałego file_textarray_fdw do mniej więcej tego samego efektu.

Mam nadzieję, że to daje pomysły i pomaga.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Stosowanie wielu funkcji okien na tej samej partycji

  2. Jak stworzyć użytkownika dla bazy danych w postgresql?

  3. Zaktualizuj wiele kolumn w funkcji wyzwalacza w plpgsql

  4. Zapytanie SQL, aby uzyskać wszystkie wartości, jakie może mieć wyliczenie

  5. Nowoczesna praktyczna opcja wyszukiwania Django z Postgresem? Potrzebujesz wielu kryteriów, ale icontains jest zbyt nieefektywny