O MYSQL importa dados do csv usando o ficheiro de dados de carga
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.
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...);
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;
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:
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
);
Se tudo estiver bem.. Execute por favor a seguinte pesquisa para carregar dados do ficheiro CSV:O SEU FICHEIRO CSV DEVE SER DEVIDAMENTE FORMATADO, POR EXEMPLO VEJA A SEGUIR IMAGEM ANEXADA:
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
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;
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.
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" pastaLOAD 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
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';
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
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á!!!