Abra ou cole um arquivo CSV e cada linha vira um item de uma lista YAML, com as chaves tiradas do cabeçalho. Por padrão, todo valor continua como texto, e os valores que um parser YAML interpretaria de outro jeito — NO, yes, 0150, 2024-03-01, null — vão entre aspas, para serem carregados de volta exatamente como foram escritos. A conversão acontece no seu navegador, e o arquivo nunca é enviado.
Como converter CSV em YAML
- Clique em Abrir arquivo, arraste um arquivo
.csv,.tsvou.txtpara a ferramenta ou escolha Colar. Se as chaves parecerem erradas, confira o delimitador e a codificação em Configurações de importação. - Escolha os Tipos de valor e como as Células vazias são gravadas. A aba YAML mostra exatamente o texto que vai no download.
- Escolha o Recuo e depois clique em Copiar ou Baixar YAML.
O resultado é uma sequência no nível superior (itens - key: value), o formato usado em fixtures, dados de seed e arquivos de dados de sites estáticos. Se você precisa de JSON, CSV para JSON tem as mesmas opções de tipo.
Opções de saída YAML
| Manter todos os valores como texto | É o padrão. Todo valor é uma string YAML; as aspas só entram onde um escalar sem aspas seria lido como outra coisa. |
|---|---|
| Detectar números e true/false | Uma coluna só vira número YAML quando todos os valores preenchidos são números simples, sem zeros à esquerda e com no máximo 15 algarismos significativos; colunas de true/false (em maiúsculas ou minúsculas) viram booleanos. yes/no e datas continuam como strings entre aspas. Os números são gravados na forma canônica, então 1.50 vira 1.5. |
| Células vazias | null (o padrão) grava key: null; Texto vazio "" grava key: ""; Omitir a chave tira essa chave da linha. |
| Recuo | 2 espaços (padrão) ou 4 espaços para as chaves dentro de cada item da lista. |
Como os valores ambíguos ficam entre aspas
A saída é escrita para ser lida da mesma forma por parsers YAML 1.2 e por parsers YAML 1.1 mais antigos, como o PyYAML, que tratam mais palavras como booleanos e números.
- Códigos de país e de resposta:
NO,yes,off,yeonvão entre aspas, para que o código da Noruega não seja carregado comofalse. Isso vale também para as chaves ("on": x). - Zeros à esquerda:
0150e08001vão entre aspas; sem aspas, o YAML 1.1 os lê como números octais ou decimais e descarta o zero. - Datas e números no modo texto:
2019-04-01e12vão entre aspas para não serem carregados como data/hora ou como inteiro. - Texto que parece nulo: uma célula com
nullou~vai entre aspas, então continua sendo o texto que você escreveu e não se confunde com uma célula vazia. - Quebras de linha dentro de um valor viram um bloco literal
|-, e textos com:ou#vão entre aspas. Linhas longas nunca são dobradas. - Os cabeçalhos viram chaves exatamente como foram escritos, inclusive com espaços e escritas não latinas. Um cabeçalho em branco vira
Column 3e um repetido viraname (2).
Problemas comuns ao converter CSV para YAML
- Uma coluna numérica continuou entre aspas com Detectar números e true/false. Pelo menos um valor não é um número simples, por exemplo
1,5,12 kgou007. Encontre-o no visualizador de CSV. - Uma coluna de sim/não não virou booleano. Só
trueefalsesão convertidos, porqueyes,noeonsó significam booleanos no YAML 1.1. Se precisar de booleanos, substitua esses valores no CSV antes com o Editor de CSV. - As chaves têm caracteres estranhos, como é. O arquivo não está em UTF-8. Escolha a codificação dele em Configurações de importação.
- Ficou tudo dentro de uma chave só. O delimitador foi detectado errado; defina-o em Configurações de importação.
Limites e privacidade
Arquivos de até 25 MB, 100.000 linhas ou 2 milhões de células abrem com prévia ao vivo das primeiras 200 linhas. Arquivos maiores são convertidos em modo de streaming: o arquivo é lido duas vezes, em partes (uma para medir as colunas e seus tipos, outra para gravar), um aviso informa que o download cobre o arquivo inteiro e a opção Copiar não fica disponível. Cada arquivo de saída tem limite de 4 GB.
A conversão roda em um worker em segundo plano nesta aba, então a página continua respondendo e Cancelar interrompe o processo. O CSV nunca é enviado a um servidor.
Exemplo: uma lista de clientes com códigos de país e códigos postais
Uma lista de clientes com códigos de país, códigos postais com zeros à esquerda, campos de sim/não, datas e células vazias, convertida com as configurações padrão (tudo como texto, células vazias como null). Com Detectar números e true/false, só orders muda, para 12, 3 e 7.
country,code,postcode,vat_registered,since,orders Norway,NO,0150,yes,2019-04-01,12 Spain,ES,08001,no,2021-11-15,3 United States,US,02134,,,7
- country: Norway code: "NO" postcode: "0150" vat_registered: "yes" since: "2019-04-01" orders: "12" - country: Spain code: ES postcode: "08001" vat_registered: "no" since: "2021-11-15" orders: "3" - country: United States code: US postcode: "02134" vat_registered: null since: null orders: "7"
Perguntas frequentes
Por que o `NO` está entre aspas?
No YAML 1.1, NO, no, off e n sem aspas significam falso. Com as aspas, um código de país norueguês, ou qualquer resposta escrita como no, continua sendo texto em qualquer parser.
Dá para gerar um único mapeamento indexado por ID em vez de uma lista?
Não. Cada linha do CSV é gravada como um item da lista, na ordem do arquivo. A saída indexada por chave não está disponível aqui.
A saída é YAML 1.2 válido?
Sim. As aspas extras necessárias para o YAML 1.1 continuam sendo YAML 1.2 válido; elas só deixam explícitos valores que já eram strings.