Como importar um arquivo csv para o ambiente de trabalho MySQL?

88

Eu tenho um arquivo CSV. Ele contém 1,4 milhão de linhas de dados, então não posso abrir esse arquivo csv no Excel porque seu limite é de cerca de 1 milhão de linhas.

Portanto, desejo importar este arquivo no ambiente de trabalho MySQL. Este arquivo csv contém colunas como

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Estou tentando criar uma tabela no ambiente de trabalho MySQL denominada "dummy" contendo colunas como

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

O arquivo CSV é nomeado model.csv. Meu código no workbench é assim:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

mas estou recebendo um erro como model.CSV file not found

vps
fonte
Você também pode fazer isso no assistente de importação dbForge Studio for MySQL . Ele gera automaticamente uma tabela da forma prnt.sc/e5iqy1
Devart

Respostas:

139

Acho que está faltando a cláusula ENCLOSED BY

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

E especifique o caminho completo do arquivo csv

Load Data Infile - documentação do MySQL

Rastreador de pacotes
fonte
1
obrigado, não estou recebendo nenhum erro neste comando. mas recebo um erro como o arquivo model.csv não encontrado. esse arquivo está armazenado na área de trabalho do meu sistema
vps
O arquivo csv está armazenado na área de trabalho do meu sistema
vps
5
ATUALIZAÇÃO: Se estiver importando strings com caracteres fora do padrão, é útil apontar a necessidade de "CHARACTER SET utf8" para a instrução: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' linhas terminadas por '\ n'; A tabela / colunas de destino também devem ser definidas como utf-8
ılǝ
1
também não se deve esquecer a palavra-chave LOCAL, sua consulta está correta
Brij Raj Singh - MSFT
2
Funcionou "mais ou menos" no windows 7 usando mysql workbench 6.2. Tive que usar barras duplas '//path//to//your//csv//file//model.csv'e todos os campos contendo barras simples quebraram.
576i de
69

Caso você tenha um conjunto de dados menor, uma maneira de obtê-lo por meio da GUI é:

  1. Abra uma janela de consulta
  2. SELECT * FROM [nome_tabela]
  3. Selecione Importar na barra de menu
  4. Pressione Aplicar no canto inferior direito abaixo da Grade de Resultado

insira a descrição da imagem aqui

Referência: http://www.youtube.com/watch?v=tnhJa_zYNVY

Gabriel Chung
fonte
13
Apenas uma nota. Essa opção de importação existe apenas em máquinas Windows. Os plug-ins aparentemente ainda são baseados em .Net, portanto não funcionam em Linux ou Mac.
BrianC
8
Não se esqueça de pressionar Aplicar após a importação.
Steve Pitchers
7
Cuidado, isso pode ser muito lento. Demorou algumas horas para fazer 25.000 linhas
Rob Sedgwick,
2
O período de tempo parece ser muito dependente do hardware. Meu computador doméstico engasgou completamente com 10 mil linhas. Meu computador de trabalho acabou de importar 243 mil linhas com cerca de 200 colunas em 85 segundos.
KathyA.
2
@BrianC Isso parece não ser mais o caso, parece para mim na versão Linux.
Jammerx2
21

No navegador em ESQUEMAS, clique com o botão direito em seu esquema / banco de dados e selecione "Assistente de importação de dados de tabela"

Funciona para mac também.

DannyPadilla
fonte
Isso funcionou para mim no Ubuntu 18.04 ao criar uma nova tabela a partir do csv. No entanto, não consegui adicionar dados a uma tabela existente usando este método.
LP Whigley
2

Você pode usar o MySQL Table Data Import Wizard

Shyju M
fonte
Obrigado :) resolveu meu problema. podemos alterar o nome da coluna posteriormente na interface do usuário (não para especialistas), assim que for importado ...
vipul kumawat
tentei muitas coisas que não funcionaram, mas finalmente funcionou. funcionou mesmo sem mexer com as configurações locais infile de dados. Estou supondo que o MySQL está executando inserções em vez disso.
Peppershaker de
1

No momento não é possível importar um CSV (usando MySQL Workbench) em todas as plataformas, nem é aconselhado se o referido arquivo não residir no mesmo host do servidor MySQL.

No entanto, você pode usar mysqlimport .

Exemplo:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

Neste exemplo, mysqlimporté instruído a carregar todos os arquivos denominados "vendas" com uma extensão começando com "part_". Esta é uma maneira conveniente de carregar todos os arquivos criados no exemplo de "divisão". Use a opção --compress para minimizar o tráfego de rede. A opção --fields-terminated-by = ',' é usada para arquivos CSV e a opção --local especifica que os dados recebidos estão localizados no cliente. Sem a opção --local, o MySQL procurará os dados no host do banco de dados, portanto, sempre especifique a opção --local.

Há informações úteis sobre o assunto na documentação do AWS RDS .

Panagiotis Moustafellos
fonte
0

Se o servidor residir em uma máquina remota, certifique-se de que o arquivo esteja na máquina remota e não na máquina local.

Se o arquivo estiver na mesma máquina em que o servidor mysql está, certifique-se de que o usuário mysql tenha permissão para ler / gravar o arquivo ou copie o arquivo para o diretório de esquema mysql:

No meu caso no ubuntu era: /var/lib/mysql/db_myschema/myfile.csv

Além disso, não é relativo a este problema, mas se você tiver problemas com as novas linhas, use sublimeTEXT para alterar os finais de linha para o formato WINDOWS, salve o arquivo e tente novamente.

Eduardo chongkan
fonte
0

Parece um pouco complicado, já que realmente me incomodava há muito tempo.

Você só precisa abrir a mesa (clique com o botão direito em "Select Rows- Limit 10000") e você abrirá uma nova janela. Nesta nova janela, você encontrará "ícone de importação".

Chen
fonte