INDICE
Innanzitutto il file csv di partenza deve avere una specifica configurazione, deve utilizzare la virgola (",") come separatore ed i campi devono coincidere come nome e come ordine con quelli della tabella della rubrica del CTI:
mysql> describe cti_phonebook; +----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | owner_id | varchar(255) | NO | MUL | | | | type | varchar(255) | NO | | | | | homeemail | varchar(255) | YES | MUL | NULL | | | workemail | varchar(255) | YES | MUL | NULL | | | homephone | varchar(25) | YES | MUL | NULL | | | workphone | varchar(25) | YES | MUL | NULL | | | cellphone | varchar(25) | YES | MUL | NULL | | | fax | varchar(25) | YES | MUL | NULL | | | title | varchar(255) | YES | | NULL | | | company | varchar(255) | YES | | NULL | | | notes | text | YES | | NULL | | | name | varchar(255) | YES | MUL | NULL | | | homestreet | varchar(255) | YES | | NULL | | | homepob | varchar(10) | YES | | NULL | | | homecity | varchar(255) | YES | | NULL | | | homeprovince | varchar(255) | YES | | NULL | | | homepostalcode | varchar(255) | YES | | NULL | | | homecountry | varchar(255) | YES | | NULL | | | workstreet | varchar(255) | YES | | NULL | | | workpob | varchar(10) | YES | | NULL | | | workcity | varchar(255) | YES | | NULL | | | workprovince | varchar(255) | YES | | NULL | | | workpostalcode | varchar(255) | YES | | NULL | | | workcountry | varchar(255) | YES | | NULL | | | url | varchar(255) | YES | | NULL | | | extension | varchar(255) | YES | MUL | NULL | | | speeddial_num | varchar(255) | YES | | NULL | | +----------------+--------------+------+-----+---------+----------------+
Inoltre:
SHOW WARNINGS;
IMPORTANTE: se si importa un file generato con una macchina Windows, è probabile che il file contenga dei caratteri particolari, che servono al controllo dei "ritorno a capo" e degli "avanzamenti di riga" (spesso questi caratteri speciali sono normalmente codificati come "^M").
La presenza di questi caratteri potrebbe far fallire l'importazione o introdurre problemi di visualizzazione della rubrica del CTI nel browser o nell'app.
Prima di procedere all'importazione è perciò fondamentale verificare se il file contenga questi caratteri, per farlo è sufficiente utilizzare il comando `file` da terminale:
~]# file test.csv test.csv: ASCII text, with CRLF line terminators
Se l'output dovesse essere come quello qui sopra, il file andrà "bonificato".
Con questo comando si possono eliminare i caratteri "sporchi", generando un nuovo file:
chown nethvoiceX:nethvoiceX /tmp/outfile.csv
runagent -m nethvoiceX
Lanciare il comando podman per copiare nel container corrispondente il csv:
podman cp /tmp/outfile.csv mariadb:/tmp/
A questo punto si potrà procedere con l'importazione usando il nuovo file, outfile.csv
podman exec -it mariadb bash
Entrare in mysql nethcti3
mysql -u root -h 127.0.0.1 -P $NETHVOICE_MARIADB_PORT -p$MARIADB_ROOT_PASSWORD MariaDB [(none)]> use nethcti3 MariaDB [nethcti3]>
eseguire l'importazione:
LOAD data local infile "/tmp/NOME_FILE.csv" INTO TABLE cti_phonebook fields terminated by ",";
NOTA: sul database deve essere presente almeno 1 contatto pena il fallimento dell'importazione
Se la rubrica è vuota è possibile fare le tutte prove che si vogliono fino ad ottenere il risultato voluto, basta eseguire il comando (sempre da mysql):
delete from cti_phonebook;
per cancellarne il contenuto e ricominciare.
ATTENZIONE: Una volta ottenuto il risultato desiderato SARA' NECESSARIO ripulire l'importazione dai valori rimasti NULL, altrimenti non sarà possibile editare i contatti successivamente!
Per eliminare le ricorrenze dei NULL è sufficiente eseguire il comando:
UPDATE cti_phonebook SET owner_id=IfNull(owner_id,''),type=IfNull(type,''),homeemail=IfNull(homeemail,''),workemail=IfNull(workemail,''),homephone=IfNull(homephone,''),workphone=IfNull(workphone,''),cellphone=IfNull(cellphone,''),fax=IfNull(fax,''),title=IfNull(title,''),company=IfNull(company,''),notes=IfNull(notes,''),name=IfNull(name,''),homestreet=IfNull(homestreet,''),homepob=IfNull(homepob,''),homecity=IfNull(homecity,''),homeprovince=IfNull(homeprovince,''),homepostalcode=IfNull(homepostalcode,''),homecountry=IfNull(homecountry,''),workstreet=IfNull(workstreet,''),workpob=IfNull(workpob,''),workcity=IfNull(workcity,''),workprovince=IfNull(workprovince,''),workpostalcode=IfNull(workpostalcode,''),workcountry=IfNull(workcountry,''),url=IfNull(url,''),extension=IfNull(extension,''),speeddial_num=IfNull(speeddial_num,'');
Si potrebbe avere a che fare con un file rubrica.csv redatto in questo modo:
angelo,public,076151111,339999942518,AGUZZI Simone angelo,public,3384311192,,AIRALDO Alessandro angelo,public,34824444475,,ALBERGO DAMIANO
In questo caso avremmo a disposizione unicamente i valori per le colonne:
col1, col2, col3, col4 col5
della rubrica sul CTI, che in realtà ne richiede molti di più.
Le colonne disponibili nella rubrica CTI sono queste:
| id | owner_id | type | homeemail | workemail | homephone | workphone | cellphone | fax | title | company | notes | name | homestreet | homepob | homecity | homeprovince | homepostalcode | homecountry | workstreet | workpob | workcity | workprovince | workpostalcode | workcountry | url | extension | speeddial_num |
Sarà comunque possibile importare il file, facendo il mapping corretto delle colonne disponibili nel csv originario con i campi della rubrica CTI:
LOAD data local infile "/tmp/nome_csv.csv" INTO TABLE cti_phonebook fields terminated by "," (@col1,@col2,@col3,@col4,@col5) set owner_id=nullif(@col1,''),type=nullif(@col2,''),workphone=nullif(@col3,''),cellphone=nullif(@col4,''),name=nullif(@col5,'');
Terminata l'importazione si dovranno eliminare le ricorrenze dei valori NULL:
UPDATE cti_phonebook SET owner_id=IfNull(owner_id,''),type=IfNull(type,''),homeemail=IfNull(homeemail,''),workemail=IfNull(workemail,''),homephone=IfNull(homephone,''),workphone=IfNull(workphone,''),cellphone=IfNull(cellphone,''),fax=IfNull(fax,''),title=IfNull(title,''),company=IfNull(company,''),notes=IfNull(notes,''),name=IfNull(name,''),homestreet=IfNull(homestreet,''),homepob=IfNull(homepob,''),homecity=IfNull(homecity,''),homeprovince=IfNull(homeprovince,''),homepostalcode=IfNull(homepostalcode,''),homecountry=IfNull(homecountry,''),workstreet=IfNull(workstreet,''),workpob=IfNull(workpob,''),workcity=IfNull(workcity,''),workprovince=IfNull(workprovince,''),workpostalcode=IfNull(workpostalcode,''),workcountry=IfNull(workcountry,''),url=IfNull(url,''),extension=IfNull(extension,''),speeddial_num=IfNull(speeddial_num,'');