Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sr. Goldberg

[Resolvido] importação de dados - acentuação

Recommended Posts

Boa tarde,

 

Quero corrigir os caracteres latinos - áéóãõ - no meu banco MySQL.

 

Estou populando uma tabela com dados de um arquivo csv usando LOAD DATA INFILE etc...

 

Meu database usa charset latin1 collate latin1_general_ci.

 

Acredito que o problema esteja no formato do arquivo CSV.

No meu editor de texto configuro como ANSI.

 

Sei que UTF-8 é Unicode, mas latin1 corresponde a que?

Como inserir os dados de forma correta?

Em qual formato o arquivo csv deve estar?

 

Valeu! :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este problema de acentuação eu tive tb e resolvi de tal forma

logo abaixo de </title> vai ter esta linha na sua pagina que esta com erro de acentuação

 

<META http-equiv=Content-Type content="text/html; charset=utf-8">
É só você trocar por está

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

com isso vai resolver a parte de acentuação, lembrando que você teve fazer isso em todas as pagina que ter erro na acentuação .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queria corrigir o formato no banco mesmo, para que uma consulta como...

 

SELECT nome FROM t_pessoas WHERE nome LIKE '%Amélia%' ;

 

... retornasse algo, da forma que está nada é retornado.

 

Mas valeu a dica B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa a insistência, mas...

 

O database está usando o charset latin1, não quero usar utf8, pois quero economizar espaço no banco...

 

Quando executo uma dml, tipo...

 

insert into tabela values (1,'jacaré');

 

o acento é preservado.

 

Mas se uso um aqruivo CSV, que é o meu objetivo, perde-se a acentuação...

 

1;jacaré

 

Já tentei alterar o LOAD DATA INFILE assim como o CSV usando delimitador para as string, tanto aspas simples como dupla...

 

Alguém já importou dados de um CSV no MySQL preservando os acentos?

 

:blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, explico!

 

Tenho uma tabela criada e vazia;

 

create table t1 (
 pk integer unsigned not null primary key auto_imcrement,
 nome varchar(32) not null
);

 

Tenho um arquivo .csv com os dados os quais quero popular a tabela;

 

1;João

2;Maria

3;André

 

Tenho um arquivo loader, estou usando a extensão .ctl, mas com extensão .sql funciona tb;

 

LOAD DATA INFILE 'C:/meu_caminho/meu_arquivo.csv'
INTO TABLE t1 FIELDS TERMINATED BY ';'
(
pk,
nome
)

 

Aí executo pelo client do mysql no DOS mesmo, tela preta e tal...

Uso o usuário root, que tem permissão file...

 

source meu_controle.ctl;

 

Funciona, porém os caracteres latinos não são preservados e não quero mudar o charset atual, que é o latin1!

 

Alguma idéia?

 

Valeu! http://forum.imasters.com.br/public/style_emoticons/default/coolio.gif

 

Também tentei usar

 

OPTIONALLY ENCLOSED BY '"' claro que colocando os caracteres do tipo varchar entre aspas duplas no arquivo .csv, mas nada feito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. certifique-se de que o arquivo csv não esteja corrompido

 

2. qual a versão do mysql e sistema operacional ?

 

3. tentou alterar em tempo de execução o charset padrão ?

exemplo com utf-8

mysql --default-character-set=utf8

 

 

pesquisa: http://www.bing.com/search?q=mysql+LOAD+DATA+INFILE+encoding&form=QBLH&scope=web&qs=n

fonte: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os arquivos .csv não estão corronpidos, pois abrindo eles em um editor de textos posso ver as informações corretamente.

 

Pesquisei mais um pouco e achei o seguinte;

 

O .csv está no formato ANSI.

 

O formato ANSI comporta caracteres latinos - áéóãõ.

 

http://www.handheld-basic.com/documentation/text/page_599.html

 

O charset latin1 com collate latin1_general_ci os suportam?

 

Acredito que sim, pois quando executo;

 

INSERT INTO t1 VALUES (1,'áéóãõ');

 

Funciona!

Só quando vem do .csv via load data infile é que não vai...

 

Quanto ao UTF8, li nesse mesmo forum que utf8 é unicode, e que unicode ocupa o triplo do espaço no banco. Procede isso?

 

Bem, valeu a força aí! :rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

referente ao UTF8, não disse para alterar para UTF8

 

a questão numero 3 é um exemplo somente.

 

 

precisamos de respostas para os itens 2 e 3 para saber instruí-lo de forma adequada e objetiva.

 

 

 

Quanto ao UTF8, li nesse mesmo forum que utf8 é unicode, e que unicode ocupa o triplo do espaço no banco. Procede isso?

UTF8 utiliza 4 bytes.

mas é não necessariamente 4 vezes maior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

2. qual a versão do mysql e sistema operacional ?

Usando o comando "status";

 

mysql> status

--------------

mysql Ver 14.12 Distrib 5.0.45, for Win32 (ia32)

 

Connection id: 1

Current database: meu_database

Current user: root@localhost

SSL: Not in use

Using delimiter: ;

Server version: 10

Connection: localhost via TCP/IP

Server characterset: latin1

Db characterset: latin1

Client characterset: latin1

Conn. characterset: latin1

TCP port: 3306

Uptime: 41 min 32 sec

 

O S.O. é Windows Vista Ultimate

 

 

3. tentou alterar em tempo de execução o charset padrão ?

exemplo com utf-8

 

mysql --default-character-set=utf8

Tentei, executei a linha acima e depois source meu_controle.ctl...

Os caracteres latinos continuam estranhos, o caracter "e" com acento agudo(é) fica como u com acento agudo(ú)...

á fica como Beta(nem sei como escrever esse caractere aqui, parece um b maiúsculo)

 

Quando insiro os dados via dml no client, colocando os valores dos campos VARCHAR entre aspas simples, funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.