Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.648 ]
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
Redimensionar e fazer upload de imagens
Script de controle do Alfresco para RHEL / CentOS / Fedora
Instalando BeEF Framework no Ubuntu
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Debian 13 "trixie&... lançado! (44)
Rust é o "C da nossa geração"? (3)
Gerenciador de arquivos é finalizado ao abrir pasta específica (2)