CSV para banco de dados…
Publicado; 11/09/2003 Arquivado em: ColdFusion Comentários desativados em CSV para banco de dados…Existem mil e uma maneiras (invente uma!) de se mandar dados de uma planilha em Excel para um banco de dados, mas uma maneira interessante é exportar os dados para um arquivo .CSV e através de um script jogar os dados no database:
<cffile action=”read” file=”c:tempdados.csv” variable=”csvFile”>
<cfquery name=”migra” datasource=”datasource”>
<cfloop index=”i” list=”#csvFile#” delimiters=”#chr(10)##chr(13)#”>
INSERT INTO contatos (IDstatus, nome, instituicao, telefone, email)
VALUES (1, #ListChangeDelims(ListQualify(i,”‘”,”;”),”,”,”;”)#);
</cfloop>
</cfquery>
Primeiro lê-se o arquivo .csv com os dados exportados da planilha em Excel e faz-se um loop sob o arquivo, usando uma quebra de linha como delimiter da “lista” (que é o .csv lido).
A função ListQualify coloca um apóstrofo (‘) antes de depois de cada ponto-e-vírgula (;), o que quer dizer que Nome do Fulano; Sobrenome do Fulano se transforma em ‘Nome do Fulano’;’Sobrenome do Fulano’.
A outra função usada, ListChangeDelims, bem, essa tá na cara :o) Ela muda o delimiter de ponto-e-vírgula para a vírgula propriamente dita, que é a usada para separar os valores na query.
E por fim, o cfloop está dentro da query por uma questão de performance: conecta-se ao banco de dados apenas uma vez, mandando um único statement sql completo, com todos os dados a serem inseridos. Note o ponto-e-vírgula ao final do VALUES (….).