Sada je: 13 pro 2017, 08:36.
Razmjena savjeta i trikova o podešavanju sustava i programa.

Moderator/ica: Moderatori/ce

++ u windozama koristim ACCESS za snimanje XML fajla iz CSV datoteke

++ u linuxu to ide još lakše , vidi ovaj link:

https://askubuntu.com/questions/581265/how-can-i-convert-a-csv-file-to-xml

ili napravi bash skriptu , poput ove:

Kod: Označi sve
#!/bin/bash
file_in="simple.csv"
file_out="simple.xml"
echo '<?xml version="1.0"?>' > $file_out
echo '<Customers>' >> $file_out
while IFS=$',' read -r -a arry
do
  echo '  <Customer>' >> $file_out
  echo '    <Name>'${arry[0]}'</Name>' >> $file_out
  echo '    <Age>'${arry[1]}'</Age>' >> $file_out
  echo '    <Country>'${arry[2]}'</Country>' >> $file_out
  echo '  </Customer>' >> $file_out
done < $file_in
echo '</Customers>' >> $file_out


s tim da se u HR koristi znak ';' umjesto ',' separatora, pa zamjeni u liniji ... IFS=$';' ... itd.
'81: ZX81 '83:ZX spectrum '85: Apple IIe '86:C-64 *** '87:PC-XT *** '88:PC-AT *** '90:386 *** 'itd.
Avatar
Postovi: 413
Postovi: 413
Pridružen/a: 26 svi 2012, 13:47
Lokacija: orahovica
Podijelio/la zahvalu: 48 puta
Primio/la zahvalu: 23 puta
Spol: M
OS: openSUSE-kde
IFS je dobra varijabla, to me u prvim danima učenja basha dosta ubilo u pojam dok nisam skužio kako/što radi. Hebo sam mater jednom par sati na tu temu Linusu, Stalmanu, GNU i tako ..
Quis custodiet ipsos custodes?

I <3 Lucijan Carić
Avatar
Moderator
Postovi: 9323
Moderator
Postovi: 9323
Pridružen/a: 07 pro 2007, 18:07
Podijelio/la zahvalu: 123 puta
Primio/la zahvalu: 237 puta
Spol: Y
OS: utuntu 17.04
evo još jedan link, ako treba ( firebase ) konverzija CSV u JSON format

https://gist.github.com/dsliberty/3de707bc656cf757a0cb

ili odmah na bash skriptu

Kod: Označi sve
#!/bin/bash
# CSV to JSON converter using BASH
# original script from http://blog.secaserver.com/2013/12/convert-csv-json-bash/
# thanks SecaGuy!
# Usage ./csv2json.sh input.csv > output.json
 
input=$1
 
[ -z $1 ] && echo "No CSV input file specified" && exit 1
[ ! -e $input ] && echo "Unable to locate $1" && exit 1
 
read first_line < $input
a=0
headings=`echo $first_line | awk -F, {'print NF'}`
lines=`cat $input | wc -l`
while [ $a -lt $headings ]
do
        head_array[$a]=$(echo $first_line | awk -v x=$(($a + 1)) -F"," '{print $x}')
        a=$(($a+1))
done
 
c=0
echo "{"
while [ $c -lt $lines ]
do
        read each_line
        if [ $c -ne 0 ]; then
                d=0
                echo -n "{"
                while [ $d -lt $headings ]
                do
                        each_element=$(echo $each_line | awk -v y=$(($d + 1)) -F"," '{print $y}')
                        if [ $d -ne $(($headings-1)) ]; then
                                echo -n ${head_array[$d]}":"$each_element","
                        else
                                echo -n ${head_array[$d]}":"$each_element
                        fi
                        d=$(($d+1))
                done
                if [ $c -eq $(($lines-1)) ]; then
                        echo "}"
                else
                        echo "},"
                fi
        fi
        c=$(($c+1))
done < $input
echo "}"


dvije napomene:

++ CSV mora imati prvi red s nazivom tagova ( prilikom XML taj red je bolje izostaviti )

++ u ovoj drugoj skripti nisam shvatio gdje se definira separator,
ali ne brinem se oko toga , prije pretvorbe u JSON otvorim CSV datoteku , zatim find/replace znak (;) u separator (,)
'81: ZX81 '83:ZX spectrum '85: Apple IIe '86:C-64 *** '87:PC-XT *** '88:PC-AT *** '90:386 *** 'itd.
Avatar
Postovi: 413
Postovi: 413
Pridružen/a: 26 svi 2012, 13:47
Lokacija: orahovica
Podijelio/la zahvalu: 48 puta
Primio/la zahvalu: 23 puta
Spol: M
OS: openSUSE-kde
JSON fajl nije prošao formalnu provjeru na ovom linku

https://jsonlint.com/

razlozi:

1) imena tagova moraju biti u navodnicima

2) vrijednosti koje nisu numeričke , recimo datum, također mora biti u navodnicima

budući da radim uvijek isti IMPORT JSON u firebase, ovo nije problem , jer mogu formatirati već CSV fajl da zadovoljava , tako da skripta može ostati ovakva kakva jest
'81: ZX81 '83:ZX spectrum '85: Apple IIe '86:C-64 *** '87:PC-XT *** '88:PC-AT *** '90:386 *** 'itd.
Avatar
Postovi: 413
Postovi: 413
Pridružen/a: 26 svi 2012, 13:47
Lokacija: orahovica
Podijelio/la zahvalu: 48 puta
Primio/la zahvalu: 23 puta
Spol: M
OS: openSUSE-kde

Na mreži
Trenutno korisnika/ca: / i 3 gostiju.