Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.837 ]
Homepage: http://rideick.blogspot.com/
Script para converter CSV para ldif.
Precisa de alguns ajustes para adequar a realidade do seu arquivo csv, pois dependendo de onde foi gerado o mesmo, as colunas variam e vc tem que pôr no esquema as variáveis definidas no arquivo.
Comigo deu certo e quebrou um galho imenso.
#!/bin/bash
#Para utililar o script você terá que instalar o dialog.
#Como adequar a realidade do seu arquivo CSV
#As variáveis f1, f2 e f... são correspondente as colunas do csv, por tanto basta que você posicione-as de acordo com o layout do arquivo que você pode ver abaixo:
#f1 = dn: (f2) (f3) (f4)
#(f11)
#(f12)
#(f8)
#sn: (f9)
#(f13)
#(f14)
#street: (f16) (f17)
#l: (f18)
#st: (f19)
#postalCode: (f20)
#objectClass: inetOrgPerson
#objectClass: top
#description: (f10)
#homePhone: (f15)
testaTrueFalse ()
{
if [ $? = 1 ]
then
exit
fi
}
#inicializa variável onde o parâmetro é linha do comando head que será usado logo abaixo
cont=1
#captura do teclado o arquivo a ser convertido
arquivo=$( dialog --stdout --inputbox 'Por favor digite o nome do arquivo CSV a ser convertido sem a extensão' 0 0 "arquivoCSV")
#Chama Função
testaTrueFalse
#define o delimitador
delimitador=$( dialog --stdout --inputbox 'Defina o delimitador de seu arquivo CSV. Ex: "," ";" caso o delimitador seja tabulação digite "t" (sem as aspas)' 0 0 "arquivoCSV")
#Chama Função
testaTrueFalse
#Expresão regular para retirar as aspas do arquivo CSV
sed '1,$s/"//g' $arquivo.csv > /tmp/$arquivo.csv
#Define o nome do arquivo resultante
arqResult=$( dialog --stdout --inputbox 'Digite o nome do arquivo resultante' 0 0 "arquivoLDIF")
#Chama Função
testaTrueFalse
rm $arqResult
while [ $cont -le 132 ]
do
#Definindo variáveis para impressão do arquivo
f1=$(head -n$cont /tmp/$arquivo.csv | cut -f1 -d$delimitador | tail -n1)
f2=$(head -n$cont /tmp/$arquivo.csv | cut -f2 -d$delimitador | tail -n1)
f3=$(head -n$cont /tmp/$arquivo.csv | cut -f3 -d$delimitador | tail -n1)
f4=$(head -n$cont /tmp/$arquivo.csv | cut -f4 -d$delimitador | tail -n1)
f8=$(head -n$cont /tmp/$arquivo.csv | cut -f8 -d$delimitador | tail -n1)
f9=$(head -n$cont /tmp/$arquivo.csv | cut -f9 -d$delimitador | tail -n1)
f11=$(head -n$cont /tmp/$arquivo.csv | cut -f11 -d$delimitador | tail -n1)
f12=$(head -n$cont /tmp/$arquivo.csv | cut -f12 -d$delimitador | tail -n1)
f13=$(head -n$cont /tmp/$arquivo.csv | cut -f13 -d$delimitador | tail -n1)
f14=$(head -n$cont /tmp/$arquivo.csv | cut -f14 -d$delimitador | tail -n1)
f15=$(head -n$cont /tmp/$arquivo.csv | cut -f15 -d$delimitador | tail -n1)
f16=$(head -n$cont /tmp/$arquivo.csv | cut -f16 -d$delimitador | tail -n1)
f17=$(head -n$cont /tmp/$arquivo.csv | cut -f17 -d$delimitador | tail -n1)
f18=$(head -n$cont /tmp/$arquivo.csv | cut -f18 -d$delimitador | tail -n1)
f19=$(head -n$cont /tmp/$arquivo.csv | cut -f19 -d$delimitador | tail -n1)
#f20=`head -n$cont $arquivo.csv | cut -f20 -d, | tail -n1`
#Iprimindo variáveis no arquivo resultante
echo dn: $f1,$f2,$f3,$f4 >> $arqResult.ldif
echo givenName: $f11 >> $arqResult.ldif
echo sn: $f12 >> $arqResult.ldif
echo cn: $f8 >> $arqResult.ldif
echo sn: $f9 >> $arqResult.ldif
echo mail: $f13 >> $arqResult.ldif
echo telephoneNumber$f14 >> $arqResult.ldif
echo street: $f16 $f17 >> $arqResult.ldif
echo l: $f18 >> $arqResult.ldif
echo st: $f19 >> $arqResult.ldif
echo postalCode: $f20 >> $arqResult.ldif
echo objectClass: inetOrgPerson >> $arqResult.ldif
echo objectClass: top >> $arqResult.ldif
echo description: $f10 >> $arqResult.ldif
echo homePhone: $f15 >> $arqResult.ldif
#echo /n >> $arqResult.ldif
cont=`expr $cont + 1`
done
#echo $arquivo.csv >> $arqResult.ldif
ls -s $arquiResult.ldif
#chama Função
testaTrueFalse
echo "Arquivo Gerado" $arqResult.ldif
Agenda de Contatos - Shell Script + MYSQL
Script para Ler código de barras serial e jogar no buffer do teclado
Angelinux Scripts - Teste de desempenho da sua maquina!
Árvore de Natal do Julio Neves
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
O widget do Plasma 6 Área de Notificação
[Resolvido] Algo deu errado ao abrir seu perfil
Quando vocês pararam de testar distros? (14)
Problema com som no laptop (3)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









