sql >> Databáze >  >> RDS >> PostgreSQL

POSTGRES KOPÍROVÁNÍ Z PROGRAMU do dynamické tabulky s neznámými sloupci

Vzhledem k tomu, že předem neznáte počet/typy řádků, navrhuji, abyste postupovali takto:

  • (1) importujte soubor CSV do (dočasné?) tabulky s jedním sloupcem textu bez rozdělení. Použijte backspace znak jako oddělovač, takže celý importovaný řádek zůstane nedotčen;
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
  • (2) spusťte dotaz, který rozdělí CSV do textového pole - funkce parse_csv a poté použijte výslednou sadu textových polí podle potřeby (možná namapujte/vložte do „skutečné“ cílové tabulky)
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;

Můžete přidat WHERE klauzule ve druhém SELECT aby bylo možné v případě potřeby filtrovat příchozí řádky.

Další možnost - podle mého názoru velmi dobrý - je použít vynikající file_textarray_fdw k víceméně stejnému efektu.

Doufám, že vám to poskytne nápady a pomůže.




  1. Jak automaticky aktualizovat záznam v databázi?

  2. Nedefinovaný index:uživatelské jméno v C:\wamp\www\Website\storeadmin\admin_login.php..a totéž pro heslo

  3. Přehled pgModeler pro PostgreSQL

  4. ORA-01002:Vyzvednutí mimo pořadí