sql >> Database >  >> RDS >> PostgreSQL

POSTGRES KOPIREN VAN PROGRAMMA naar een dynamische tabel met onbekende kolommen

Aangezien u het aantal/type rijen niet van tevoren weet, raad ik u aan dit als volgt te doen:

  • (1) importeer je CSV in een (tijdelijke?) tabel met een enkele tekstkolom zonder te splitsen. Gebruik backspace teken als scheidingsteken zodat de hele geïmporteerde regel intact blijft;
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
  • (2) voer een query uit die de CSV splitst in een tekstarray - functie parse_csv , en gebruik vervolgens de resulterende set tekstarrays zoals relevant (misschien toewijzen/invoegen in de 'echte' doeltabel)
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;

U kunt een WHERE . toevoegen clausule in de tweede SELECT statement om indien nodig inkomende rijen te filteren.

Een andere optie - een zeer goede naar mijn mening - is om de uitstekende file_textarray_fdw te gebruiken met min of meer hetzelfde effect.

Ik hoop dat dit je ideeën en hulp geeft.




  1. selectbox met meerdere kolommen uit de mysql-database

  2. Laat localhost draaien op mac OS X Yosemite

  3. mysql_fetch_array en while-lus in php

  4. hoe haal je alle rijen van het resultaat op in php mysql?