Como importar um arquivo Excel para um banco de dados MySQL

88

Alguém pode explicar como importar um arquivo do Microsoft Excel para um banco de dados MySQL?

Por exemplo, minha tabela do Excel tem esta aparência:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80
Fero
fonte
[Você pode dar uma olhada neste tópico] [1] nos fóruns do MySQL. Ele explica como fazer exatamente o que você deseja. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns
1
Este utilitário gratuito torna a importação de planilhas do Excel para as tabelas do mysql rápida e fácil. Panofish.net/…
panofish
1 para uma ideia nova e diferente. O processamento é incrivelmente lento, ele primeiro lê cada linha no arquivo e depois carrega qualquer coisa. Demorou cerca de 15 minutos para importar 5,2 mil linhas
Fr0zenFyr de
Para algumas planilhas, pode ser lento devido ao número de colunas e linhas. Mas, eu culpo a biblioteca microsofts com-object, que é usada para ler a planilha. Meu programa lê a planilha tão rápido quanto a biblioteca permite. As inserções do mysql são muito rápidas. Se você pode eliminar colunas desnecessárias antes de importar ... isso pode ajudar.
panofish
Eu tinha 14 colunas em 5173 linhas. Eu já tinha selecionado todas as colunas / linhas vazias e as excluí para evitar processamento desnecessário. O sistema que eu estava usando tinha 2,5G de RAM e processador core2duo, não tinha muitos processos rodando, a aba performance mostrou 65% de uso em todos e muita RAM ainda não utilizada. Então, eu acho que eu não culparia o hardware, mas como você disse, os objetos do MS com são uma merda ... Não sei quando o MS vai parar de criar lixo que parecem salva-vidas para novatos. Estou farto de fazer merda extra por produtos de MS.
Fr0zenFyr

Respostas:

46
  1. Exporte-o para algum formato de texto. O mais fácil provavelmente será uma versão delimitada por tabulações, mas CSV também pode funcionar.

  2. Use o recurso de carregamento de dados. Veja http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Olhe no meio da página, pois dará um bom exemplo para dados separados por tabulação:

    CAMPOS TERMINADOS POR '\ t' INCLUÍDOS POR '' ESCAPADO POR '\'

  4. Verifique seus dados. Às vezes, citar ou escapar tem problemas e você precisa ajustar sua fonte, comando de importação - ou pode ser mais fácil de pós-processar via SQL.

ndp
fonte
2
Ao exportar para CSV, [pelo menos] o Excel 2013 tenta ativamente envenenar os dados usando aspas duplas com escape de VBA, usando o separador decimal dependente da localidade (com base nas configurações regionais do sistema operacional) para valores 0 (por exemplo, ',', ao usar 'conforme definido no separador de propriedades da célula para todos os outros valores. Melhor ficar longe de CSV.
afk5min
1
Observe que este procedimento requer que você primeiro crie a tabela, com os campos apropriados.
LarsH
Esse não é o único problema. Não tenho certeza se este procedimento lida corretamente com o retorno de carro dentro de uma célula no Excel. Mesmo as importações de csv para excel falham nisso
Raul Luna
1
@ afk5min o que você quer dizer com "dados de veneno" ??? Todas essas tags e marcações são muito úteis para os usuários que obviamente irão importar isso para outro produto MS ...
Mindwin
1
* Você quis dizer "A maneira mais difícil", não a mais fácil
Revious
102

Existe uma ferramenta online simples que pode fazer isso chamada sqlizer.io .

Captura de tela de sqlizer.com

Você carrega um arquivo XLSX nele, insere um nome de planilha e intervalo de células, e isso irá gerar uma instrução CREATE TABLE e um monte de instruções INSERT para importar todos os seus dados em um banco de dados MySQL.

(Aviso: Eu ajudo a executar o SQLizer)

d4nt
fonte
22
É bom saber que essa ferramenta existe, mas definitivamente pense se você deve usá-la ou não. Se a sua planilha contiver dados confidenciais (por exemplo, e-mails de usuários, senhas, informações de cc, informações médicas etc.), pode não ser uma boa ideia. Este site pode não armazenar seus dados e pode ser seguro, mas não há como você ter certeza disso.
Chris Schmitz
1
@DivyeshJesadiya É gratuito para qualquer coisa até 5000 linhas. Depois disso, você tem que pagar $ 10 por um mês de uso.
d4nt de
@doxsi parece bom para mim, que tipo de problema você teve com isso?
d4nt
@ChrisSchmitz somos extremamente cautelosos com a segurança e escrevemos uma postagem no blog recentemente sobre como operamos o SQLizer blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan
Funciona, atenção no formato Excel, xlt não é aceito enquanto xls é aceito.
Emanuel Pirovano
40

Abaixo está outro método para importar dados de planilha para um banco de dados MySQL que não depende de nenhum software extra. Vamos supor que você deseja importar sua tabela do Excel para a salestabela de um banco de dados MySQL denominado mydatabase.

  1. Selecione as células relevantes:

    insira a descrição da imagem aqui

  2. Cole no Mr. Data Converter e selecione a saída como MySQL:

    insira a descrição da imagem aqui

  3. Altere o nome da tabela e as definições de coluna para atender aos seus requisitos na saída gerada:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. Se você estiver usando o MySQL Workbench ou já estiver conectado a mysqlpartir da linha de comando, poderá executar as instruções SQL geradas a partir da etapa 3 diretamente. Caso contrário, cole o código em um arquivo de texto (por exemplo, import.sql) e execute este comando a partir de um shell Unix:

    mysql mydatabase < import.sql

    Outras maneiras de importar de um arquivo SQL podem ser encontradas nesta resposta do Stack Overflow .

thdoan
fonte
1
Esta foi a maneira mais fácil. Obrigado! Apenas lembre-se de remover o 'ID' da Chave Primária extra no SQL e coloque um incremento AUTO de sua escolha.
Fandango68
29

Na verdade, existem várias maneiras de importar um arquivo do Excel para um banco de dados MySQL com vários graus de complexidade e sucesso.

  1. Excel2MySQL . Sem dúvida, a maneira mais fácil e rápida de importar dados do Excel para o MySQL. Suporta todas as versões do Excel e não requer instalação do Office.

    captura de tela do Excel2MySQL

  2. LOAD DATA INFILE : Esta opção popular é talvez a mais técnica e requer algum conhecimento da execução do comando MySQL. Você deve criar manualmente sua tabela antes de carregar e usar tipos de campo VARCHAR de tamanho apropriado. Portanto, seus tipos de dados de campo não são otimizados. LOAD DATA INFILE tem problemas para importar arquivos grandes que excedem o tamanho 'max_allowed_packet'. É necessária atenção especial para evitar problemas na importação de caracteres especiais e caracteres Unicode estrangeiros. Aqui está um exemplo recente que usei para importar um arquivo csv chamado test.csv.

    insira a descrição da imagem aqui

  3. phpMyAdmin : Selecione seu banco de dados primeiro e, a seguir, selecione a guia Importar. phpMyAdmin criará automaticamente sua tabela e dimensionará seus campos VARCHAR, mas não otimizará os tipos de campo. phpMyAdmin tem problemas para importar arquivos grandes que excedem o tamanho 'max_allowed_packet'.

    insira a descrição da imagem aqui

  4. MySQL para Excel : Este é um suplemento gratuito do Excel da Oracle. Esta opção é um pouco tediosa porque usa um assistente e a importação é lenta e com erros com arquivos grandes, mas pode ser uma boa opção para arquivos pequenos com dados VARCHAR. Os campos não são otimizados.

    insira a descrição da imagem aqui

panofish
fonte
Olá, @panofish, tenho um excel que é atualizado diariamente. Eu gostaria de colocar apenas os dados atualizados a serem colocados na tabela do banco de dados mysql, em vez de toda a tabela. (ou seja) coloque uma linha na tabela por dia. Como isso pode ser feito?
Arun Raja
Todas essas soluções se concentram em carregar uma planilha inteira e substituir sua tabela MySQL ou anexar à tabela. As alterações estão adicionando novos registros ou alterando os registros existentes?
panofish
Eles estão apenas substituindo os valores. Mas eu quero apenas os valores a serem acrescentados que ainda não estão presentes no banco de dados com base na data. Isso pode aumentar o desempenho apenas adicionando algumas linhas em vez de adicionar muitas linhas diariamente.
Arun Raja
2
A ferramenta Excel2MySQL deve ter a possibilidade de criar apenas o script do banco de dados :(
joseantgv
PHPMyAdmin foi o mais fácil e rápido.
Amir Hajiha
2

Não tenho certeza se você tem toda essa configuração, mas para mim estou usando PHP e MYSQL. Então, eu uso uma classe PHP PHPExcel. Isso pega um arquivo em quase qualquer formato, xls, xlsx, cvs, ... e então permite que você leia e / ou insira.

Então, o que acabo fazendo é carregar o Excel em um objeto phpexcel e, em seguida, percorrer todas as linhas. Com base no que desejo, escrevo um comando SQL insert simples para inserir os dados do arquivo excel em minha tabela.

No front-end é um pouco trabalhoso, mas é apenas uma questão de ajustar alguns dos exemplos de código existentes. Mas quando você tem que fazer alterações na importação é simples e rápido.

user1441213
fonte
1

a melhor e mais fácil maneira é usar o aplicativo "MySQL for Excel" que é um aplicativo gratuito da oracle. este aplicativo adicionou um plugin para excel para exportar e importar dados para mysql. você pode baixar isso aqui

Sadeq Shajary
fonte
1

Ao usar arquivos de texto para importar dados, tive problemas com aspas e como o Excel estava formatando os números. Por exemplo, minha configuração do Excel usou a vírgula como separador decimal em vez do ponto.

Agora eu uso o Microsoft Access 2010 para abrir minha tabela MySql como uma tabela vinculada. Lá, posso simplesmente copiar e colar células do Excel para o Access.

Para fazer isso, primeiro instale o driver ODBC do MySql e crie uma conexão ODBC . Em seguida, no acesso, na guia "Dados externos", abra a caixa de diálogo "Banco de dados ODBC" e vincule a qualquer tabela usando a conexão ODBC.

Usando o MySql Workbench , você também pode copiar e colar seus dados do Excel na grade de resultados do MySql Workbench. Dei instruções detalhadas nesta resposta .

Christophe Weis
fonte
0

Para ver um exemplo passo a passo de como importar o Excel 2007 para o MySQL com a codificação correta (UTF-8), pesquise este comentário:

"Postado por Mike Laird em 13 de outubro de 2010 às 12h50"

no próximo URL:

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

Raúl Moreno
fonte
0

Você pode usar DocChow , um GIU muito intuitivo para importar Excel para o MySQL, e é gratuito na maioria das plataformas comuns (incluindo Linux).

Mais especialmente se você estiver preocupado com a data, tipos de dados datetime, DocChow manipula facilmente tipos de dados. Se você estiver trabalhando com várias planilhas do Excel que deseja importar para uma tabela MySQL, o DocChow fará o trabalho sujo.

Seanj1000
fonte
0

Etapa 1 Crie seu arquivo CSV

Etapa 2 faça login em seu servidor mysql

     mysql -uroot -pyourpassword 

Etapa 3 carregar seu arquivo csv

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);
Syed Shibli
fonte
0

Outra ferramenta útil, e como substituto do front-end do MySQL, é o Toad para MySQL . Infelizmente, não é mais compatível com Quest , mas um IDE brilhante para MySQL, com assistentes IMPORT e EXPORT, atendendo à maioria dos tipos de arquivo.

Fandango68
fonte