Sql - configuração arquivo csv

Oi,

Estou dando os primeiros passos na análise de dados, por isso minha dúvida é bem básica. Hoje resolvi dar uma praticada no que aprendemos até o momento no curso Dados 360. Escolhi mexer com uma tabela do PNADC-2018 (https://www.ibge.gov.br/estatisticas/sociais/trabalho/17270-pnad-continua.html?edicao=25646&t=resultados).

Como ela nao está em CSV, abri no Excel e depois salvei no formato que eu precisava. Fiquei me perguntando se teria outro jeito de converter que não fosse utilizando o Excel.

Ao importar o CSV para o SQL não encontro o encoding adequado. Dois deles chegam perto, mas ainda apresentam erros nas palavras acentuadas e nas que tem Ç. Vi que tem a opção “outro”. A solução seria procurar o encoding dessa tabela no site do IBGE?

Outra coisa é que nao consigo fazer é transformar a primeira linha em menu, pq tem um cabeçalho.
Por mais que eu apague as infos do cabeçalho, ainda falta saber como deixar os nomes das colunas na primeira linha.

Anexei um prints da tela do SQL

Se alguem puder me dar uma força, seria ótimo. E se tiverem algum dica de primeiros passos no SQL, tb tenho interesse.

Abraço!

1 Curtida

Oi Talita, seja bem vinda ao Fórum!

Vou dividir a resposta nos tópicos abaixo, ok?

Conversão

Existem diversas formas de fazer, seja via interface gráfica com soluções offline (Excel, OpenRefine, etc), seja online (Google Spreadsheets, conversores diversos na internet, etc) ou ainda via linha de comando e linguagens de programação. A melhor forma vai depender do seu conhecimento, de quantas vezes você irá precisar fazer o procedimento e etc.

Encoding

Quando você abre no Excel, os caracteres aparecem corretamente? Neste caso, na hora de salvar o arquivo como CSV, você provavelmente irá encontrar opções para determinar a codificação de caracteres que será utilizada no arquivo de saída. Eu nem sai a sua versão do Excel, nem o tenho instalado para dar o passo a passo exato, mas conta pra gente se não conseguir.

Cabeçalho

Neste caso, parece que seria preciso apagar as 12 primeiras linhas, pois o cabeçalho está na linha 13, na imagem que você mandou. Depois disso, ao importar o CSV no DB Browser, mantenha selecionada a opção "Nome das colunas na primeira linha’.

1 Curtida

Oi Adriano,

Deu certo! Muito Obrigada :slight_smile:
Limpei o cabeçalho no Excel e na hora de salvar encontrei a opção “CSV UTF-8” (Antes tinha selecionado o formato CSV MS-DOS).

Agora que abri no SQL outras dificuldades apareceram. Quando executei SQL obtive alguns erros. Percebi que muito estavam relacionados com o nome das colunas e com o nome da tabela. Por exemplo, quando a tabela tinha seguinte nome: “PNAD_Continua_2018_Rendimento_de_Todas_as_Fontes” geralmente dava erro. Quando alterei para “PNADC” passou a funcionar.

Ou quando o nome de determinada coluna tinha acento ou “.” isso tambem dava erro.

Existe uma sintaxe correta para tabelas .csv? Por exemplo, o ideal seria escrever tudo em minúsculo e sem acento e nem traço.

Oi Talita, qual erro que aparecia referente ao nome da tabela?

O ideal seria escrever sem acento ou caracteres especiais, mas acho que a princípio, com o encoding correto, isso não deveria dar problemas no seu CSV, não. Você pode detalhar melhor quais erros apareceram?

Fiz um print pra vc ver o erro.

Quando o nome da tabela estava “PNAD_Continua_2018_Redimento_de_Todas_as_Fontes-limpeza” deu erro. Quando mudei para PNAD funcionou. Na verdade, funcionou em partes, pq ao invés de mostrar os resultados das colunas 2012, 2013, 2014 ele repetiu embaixo de cada uma os valores 2012, 2013 e 2014, respectivamente. Mas coloquei entre aspas e resolveu.

Em outra tabela, tambem deu erro. Quando nome dela era “PNAD (Trab hab+Outros efetivo)” apareceu a seguinte mensagem:

Resultado: near “hab”: syntax error
Na linha 1:
SELECT 2012, 2013, 2014
FROM RDPC (Trab hab

Ao mudar pro nome PNAD, funcionou.

Oi @talita, parece que são os caracteres especiais que para o SQL significam operações matemáticas, como o hífen/sinal de menos e o sinal de mais. É uma boa prática você colocar um nome com padrões melhores no ato da importação, mas acho que talvez você consiga executar a consulta delimitando o nome da tabela com as aspas simples.

Ao invés de…

SELECT * FROM minha-tabela;

Tenta com…

SELECT * FROM `minha-tabela`;