O MYSQL importa dados do csv usando o ficheiro de dados de carga

Estou a importar alguns dados de 20000 linhas de um ficheiro CSV para o Mysql.

As colunas do CSV estão numa ordem diferente das colunas da tabela MySQL. Como atribuir automaticamente as colunas correspondentes às colunas da tabela Mysql?

Quando eu executar

LOAD DATA INFILE'abc.csv' INTO TABLE abc

esta consulta adiciona todos os dados à primeira coluna.

por favor, sugira a sintaxe automática para importar dados para o Mysql.

Author: Brian Tompsett - 汤莱恩, 2013-01-02

9 answers

Você pode usar carregar o ficheiro de Informação para importaro ficheiro csv para a tabela.

Verifique esta ligação MySQL-carregar o ficheiro de dados.

LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
 119
Author: Saharsh Shah, 2016-10-02 03:04:54

Você provavelmente precisa definir o {[[1]} ou qualquer que seja o delimitador.

Para um ficheiro CSV, a sua declaração deve ser assim:

LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
 39
Author: ckim, 2016-03-28 12:17:04

Antes de importar o ficheiro, tem de preparar o seguinte:

  • uma tabela de base de dados para a qual os dados do ficheiro serão importados.
  • um ficheiro CSV com dados que correspondem ao número de colunas do quadro e tipo de dados em cada coluna.
  • a conta, que se liga ao servidor de bases de dados MySQL, tem um ficheiro e inserir privilégios.

Suponha que temos a seguinte tabela:

enter image description here

CRIAR UMA TABELA USANDO SEGUINTE PESQUISA:

CREATE TABLE IF NOT EXISTS `survey` (
  `projectId` bigint(20) NOT NULL,
  `surveyId` bigint(20) NOT NULL,
  `views` bigint(20) NOT NULL,
  `dateTime` datetime NOT NULL
);

O SEU FICHEIRO CSV DEVE SER DEVIDAMENTE FORMATADO, POR EXEMPLO VEJA A SEGUIR IMAGEM ANEXADA:

enter image description here

Se tudo estiver bem.. Execute por favor a seguinte pesquisa para carregar dados do ficheiro CSV:

Nota: Por Favor adicione a localização absoluta do seu ficheiro CSV

LOAD DATA INFILE '/var/www/csv/data.csv' 
INTO TABLE survey 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

Se tudo tiver feito. exportou os dados do CSV para a tabela com sucesso

 37
Author: Sunny S.M, 2015-10-23 15:10:55

Sintaxe:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name' INTO TABLE `tbl_name`
CHARACTER SET [CHARACTER SET charset_name]
FIELDS [{FIELDS | COLUMNS}[TERMINATED BY 'string']] 
[LINES[TERMINATED BY 'string']] 
[IGNORE number {LINES | ROWS}]

Ver este exemplo:

LOAD DATA LOCAL INFILE
'E:\\wamp\\tmp\\customer.csv' INTO TABLE `customer`
CHARACTER SET 'utf8'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
 8
Author: Nashir Uddin, 2018-03-14 14:31:30

Inserir uma quantidade superior a 7000000 de registos em 1 minutos na base de dados(pesquisa superfast com cálculo)

mysqli_query($cons, '
    LOAD DATA LOCAL INFILE "'.$file.'"
    INTO TABLE tablename
    FIELDS TERMINATED by \',\'
    LINES TERMINATED BY \'\n\'
    IGNORE 1 LINES
    (isbn10,isbn13,price,discount,free_stock,report,report_date)
     SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))),
         RRP_nl = RRP * 1.44 + 8,
         RRP_bl = RRP * 1.44 + 8,
         ID = NULL
    ')or die(mysqli_error());
$affected = (int) (mysqli_affected_rows($cons))-1; 
$log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.');

O RRP e o RRP_nl e o RRP_bl não estão no csv, mas calculamos isso e depois inserimos isso.

 2
Author: krunal panchal, 2017-02-17 07:15:49

Suponha que está a usar xampp e phpmyadmin

Tens o nome do ficheiro 'ratings.txt 'table name' ratings 'and database name 'movies'

Se o seu xampp estiver instalado em "C:\xampp\"

Copia as tuas audiências.txt " ficheiro em "C:\xampp\mysql\data\movies" pasta
LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

Espero que isto possa ajudá-lo a omitir o seu erro se estiver a fazer isto no localhost

 1
Author: Mohammad Arshi, 2017-10-07 18:00:26

Pode carregar dados de um ficheiro csv ou de texto. Se você tem um arquivo de texto com registros de uma tabela, você pode carregar esses registros dentro da tabela. Por exemplo, se você tem um arquivo de texto, onde cada linha é um registro com os valores para cada coluna, você pode carregar os registros desta forma.

Tabela.SQL

id //field 1

name //field2

Tabela.txt

1,peter

2,daniel

...

-- example on windows

LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt'
INTO TABLE Table
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'; 
 0
Author: Jorge T, 2016-10-06 03:09:44

Se estiver a correr LOAD DATA LOCAL INFILE a partir da linha de comandos do windows, e tiver de usar {[[2]}, terá de fazer algo assim para escapar correctamente aos caracteres:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out
 0
Author: Kikoz, 2016-10-07 01:13:46
Estava a receber o código de erro 1290. O servidor de MySQL está a correr com o -- secure-file-priv opção para que não possa executar esta instrução

Isto funcionou para mim no windows 8.1 64 bits usando o wampserver 3.0.6 64bit.

Editei a minha.ficheiro ini de C:\wamp64\bin\mysql\mysql5.7.14

Apagar o item secure_file_priv c:\wamp64\tmp\ (ou o que quer que você tenha aqui)

Parou tudo-saída wamp etc.- e reiniciou tudo, e depois punt meu arquivo cvs em C:\wamp64\bin\mysql\mysql5.7.14\data\u242349266_recur (sendo a última dir o nome da minha base de dados)

Executado Carregar o ficheiro 'myfile' de dados.csv '

Na tabela alumnos

CAMPOS TERMINADOS POR', '

FECHADO POR '"

Linhas terminadas por '\r\n '

IGNORAR 1 LINHAS

... e voilá!!!

 0
Author: Carlos Garcia, 2017-08-30 02:37:24