Conversor de CSV para YAML

YAML é do que os arquivos de configuração modernos são feitos: manifests do Kubernetes, fluxos de trabalho do GitHub Actions, Docker Compose, playbooks do Ansible, fixtures do Rails. Este conversor lê um CSV e produz uma sequência YAML onde cada linha se torna um mapeamento com a chave da linha de cabeçalho. A saída usa indentação de dois espaços e um limite de 4 níveis em linha, que corresponde ao estilo da maioria dos editores e linters.

Como o CSV se torna YAML

  1. 1

    Cole o CSV

    Um exemplo é pré-carregado para que você possa ver a forma de saída padrão; substitua-o pelos seus dados.

  2. 2

    Escolha o delimitador

    Vírgula por padrão. Digite `\t` para entrada separada por tabulação ou qualquer outro caractere único que seu arquivo use.

  3. 3

    Cabeçalhos se tornam chaves

    A linha 1 é tratada como o cabeçalho. As linhas de dados se tornam mapeamentos sob essas chaves na mesma ordem das colunas de origem.

  4. 4

    YAML despejado com segurança

    A saída é renderizada pelo componente Symfony YAML, que coloca aspas em valores quando a ambiguidade com booleanos, números ou datas ocorreria.

Particularidades do YAML que você deve saber antes de colar a saída

YAML é notoriamente indulgente na superfície e cheio de armadilhas por baixo. O dumper lida com a maioria delas, mas seus dados ainda precisam sobreviver ao round-tripping.

O problema da Noruega e amigos

YAML 1.1 trata um no, yes, on, off, true, false, y, n (e suas formas capitalizadas) como booleanos. Isso significa que uma coluna de código de país com NO para a Noruega pode silenciosamente se transformar em false.

Célula de origem Emitido como (sem aspas) Geralmente pretendido como
NO false O país Noruega
ON true O estado Ontário
123 123 Número ou ID
0100 64 (octal!) Um código com zero à frente

O dumper coloca aspas em valores arriscados automaticamente, mas se você está vendo tipos errados em sua saída, mude para parsers YAML 1.2 a jusante ou coloque aspas explicitamente em valores que você se importa.

Escolhas de formatação

  • Indentação de dois espaços. Padrão para a maioria dos editores; linters como yamllint usam isso por padrão.
  • Limite em linha 4. Estruturas profundamente aninhadas são impressas em uma linha abaixo do 4º nível, acima disso se expandem para várias linhas. Ajuste a jusante se você quiser blocos mais rigorosos.
  • Âncoras e aliases não são gerados. Cada linha é um novo mapeamento, mesmo que as linhas se repitam.

Exemplo de saída

- name: Alice
  age: 30
- name: Bob
  age: 25

Quando escolher YAML em vez de JSON

  • Configurações editadas manualmente, onde comentários e strings de várias linhas importam.
  • Manifestos do Kubernetes, pipelines de CI, playbooks do Ansible.
  • Qualquer contexto onde as pessoas lerão o arquivo tanto quanto as máquinas.

Caso contrário, JSON é mais rigoroso e mais rápido para analisar, prefira-o para formatos de transmissão e cargas geradas.

Perguntas frequentes

YAML 1.1 interpreta NO como um booleano. O conversor coloca aspas em valores arriscados, mas se um parser a jusante ainda coerciona tipos, coloque aspas nas células problemáticas antes de colar a saída ou mude para um parser YAML 1.2 que trate esses como strings simples.

Não com este conversor, cada linha se torna um mapeamento plano. Para YAML aninhado, construa um pequeno script em torno de uma biblioteca YAML, ou converta para JSON primeiro e molde isso em um editor JSON.

As células são analisadas com str_getcsv usando seu delimitador escolhido. Valores entre aspas preservam delimitadores e aspas incorporados da mesma forma que fariam em um verdadeiro parser CSV.

Sim. O CSV que você cola é enviado ao nosso servidor, pois a análise e a serialização YAML são executadas lá. Ele é usado apenas para gerar o resultado YAML e não é armazenado.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas