importare dati da un file csv
Salve,
nel tentativo di importare dei dati da un file csv sul db di drupal mi sono imbattuto nel modulo Feeds.
La mia intenzione è quella di visualizzare i dati traminte Views.
Ecco cosa ho fatto:
ho creato un tipo di contenuto "testImport" con tutti i campi necessari,
ho configurato Feeds Importer per prendere in input il file csv,
ho assegnato tutte le corrispondenze dei campi di "testImport".
L'import ha funzionato solo che il file csv ha più di 3000 righe e il processo di import ha creato più di 3000 contenuti di tipo "testImport".
A me non interessa importare e creare 3000 contenuti ma poter leggere e filtrare il contenuto del file csv tramite Views.
Inoltre i contenuti creati infestano la bacheca rendendo confusionaria la gestione e constringendo a filtrare il continuazione per nascondere i 3000 nuovi contenuti...
Come si può fare a importare senza avere tutto questo "spam"?
Grazie.

Risposte
Ciao, se - non ti interessa
Ciao, se - non ti interessa importare e creare 3000 contenuti - allora hai necessità di avere una cosiddetta custom table che semplicemente interagisce con view e non con i complessi nodi di drupal.
Occorrente:
- un semplice file da far girare nella root di drupal per caricare da csv al database. (per un modulo occorre tempo)
- un hook data_view per vedere la tua custom table in views
Copiarti tutto il codice qui fa confusione. Scaricalo il file alpha_csvimport.php da:
https://github.com/eugeniotcs/volunteer_rally/tree/master
Sentiti libero di modificarlo come vuoi. Piuttosto, dovrai farlo visto che devi personalizzarlo con le colonne del tuo csv. Ma la logica è quella.
Salve, è proprio quello che
Salve,
è proprio quello che mi serve: custom table.
Mentre aspettavo la tua gentile risposta però avevo già messo a punto un file php da lanciare per iniettare il file csv in una nuova tabella del db di Drupal. Il risultato è perfetto solo che adesso, prendendo spunto dal tuo file, ho capito che dovrei aggiungere qualche controllo in più sull'input ma va bene...
Ho già creato un nodo con il codice php per leggere i dati dalla tabella (con tutte le difficoltà di impaginazione, filtri ecc) ma adesso tu mi dici che posso agganciarla a views...
Potresti descrivere questo passaggio con data_view che a quanto pare è il più oscuro per me?
Grazie.
Ciao, non ci sono particolari
Ciao, non ci sono particolari passaggi.
Devi solo scaricare come di dicevo sopra il file alpha_csvimport.php dal link github sopra..
(penso avrai fatto.)
Ma views_table_custom devie tenere presente che è un modulo da mettere nel tuo sito in
sites\all\modules come al solito.
Prima di attivarlo modifica a piacere o meglio a necessità l hook_view
Ad esempio per ogni campo della tabella custo dovrai aggiungere:
$data['alpha_csvimport']['name'] = array( // name è il nome del campo della tabella e alpha_csvimport' è il nome della tabella 'title' => t('Name'), 'help' => t('Name within.'), 'field' => array( 'handler' => 'views_handler_field', // qui puo essere views_handler_field_date, views_handler_field_numeric 'click sortable' => TRUE, // oppure FALSE se non vuoi ordinabile ), 'sort' => array( 'handler' => 'views_handler_sort', ), 'filter' => array( 'handler' => 'views_handler_filter_string', // oppure views_handler_filter_date, views_handler_filter_numeric ), );Se sono di tipo data, testo,numero devi modificare do conseguenza.
Vedi https://www.drupal.org/node/1715690 link indicato a top del modulo...
Bisogna "codare un po" ma è fattibile. (io non so il nome dei campi del tuo csv)
Una volta finito (non ti dimenticare il prefisso nel settings.php) attiva il modulo e pulisci la cache.
A me serviva da tempo: mi era stato chiesto di poter lavorare con delle tabelle in linea apribili facilmente con l'interfaccia di sqlServer senza avere tutte quelle tabelle relazionate che si creano con field in drupal ogno volta cha aggiungi un field personalizzato. ...cosi ho trovato questa soluzione.
Enjoi