Pergunta

Precisa processar arquivos CSV grandes com php.Trabalhar com fgetcsv e desempenho parece muito bom.Para um processamento ainda melhor/mais rápido, gostaria que os arquivos csv tivessem nomes de colunas na primeira linha, que estão faltando no momento.

Agora eu gostaria de adicionar uma linha superior com nomes de colunas ao arquivo csv com PHP antes de processar os arquivos com fgetcsv.

Existe uma maneira de adicionar uma linha no topo do arquivo com php facilmente?Ou isso significaria que eu teria que adotar uma abordagem como a abaixo?

  1. Item da lista
  2. Item da lista
  3. crie um arquivo temporário
  4. adicione os nomes das colunas a este arquivo temporário
  5. leia o conteúdo original do arquivo csv
  6. coloque o conteúdo csv original no arquivo temporário
  7. excluir arquivo original
  8. renomeie o arquivo temporário

Qualquer feedback sobre como fazer isso da maneira mais eficaz será muito apreciado.Obrigado pelo seu tempo :)

Foi útil?

Solução

    .
  1. Leia o arquivo CSV usando o fgetcsv.
  2. feche o arquivo.
  3. Abra o arquivo usando o modo "W" (gravação).
  4. Escreva os cabeçalhos.
  5. feche o arquivo.
  6. Abra o arquivo usando o modo "A" (Append).
  7. Escreva o arquivo CSV usando fputcsv. Voila!

Outras dicas

Por favor, tente isso ..muito mais simples e direto ao ponto.

  $file = 'addline.csv';
  $header = "Name, IP,  Host, RAM, Task, NS \r\n";
  $data = file_get_contents($file);
  file_put_contents($file, $header.$data);

Você terminou.Espero que isto ajude...

Basta fazer do jeito que você forneceu.não há uma maneira fácil de estender um arquivo no início em vez de no final.é como escrever no papel.é fácil adicionar novas linhas abaixo do texto, mas você não pode escrever acima do texto.

Não use fopen($file, "r+") ou fopen($file, "c") pois isso removerá as linhas existentes no início ou até mesmo todas as linhas do seu arquivo.

Por que não definir o cabeçalho em seu código manualmente, especialmente se cada arquivo tiver o mesmo cabeçalho? Se você realmente precisar inserir o cabeçalho em arquivos CSV antes de processá-los, talvez você deve considerar usar sed assim: sed -i 1i'"header 1","header 2"' file.csv

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top