简体   繁体   English

批处理脚本通过CSV文件循环到MySQL

[英]Batch script loop through CSV files into MySQL

How can I loop through the files in a directory (they are all CSV files), and then log into mysql with mysql -u root (no password for sake of simplicity) and add them all to a mysql table? 如何遍历目录中的文件(它们都是CSV文件),然后使用mysql -u root (为简单起见,没有密码)登录mysql并将它们全部添加到mysql表中? This is the query that loads files into mysql fast: 这是将文件快速加载到mysql中的查询:

LOAD DATA LOCAL INFILE "C:/prog/mydb_load_Cards_chunks.dump" INTO TABLE vcc2.tmp_cards CHARACTER SET latin1
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;

How can I do this for every file in a directory while being logged into mysql? 登录到mysql时,如何对目录中的每个文件执行此操作?

Try: 尝试:

File: load_csv.sh (-rx------ user user load_csv.sh*) 文件: load_csv.sh (-rx------ user user load_csv.sh*)

#!/bin/bash

for current_csv in *.csv
do
mysql --login-path=myconnection -e "USE test" -e "
  LOAD DATA LOCAL INFILE '$current_csv'
  INTO TABLE temp_table
  FIELDS TERMINATED BY ','
  OPTIONALLY ENCLOSED BY '\"'
  LINES TERMINATED BY '\n'
  IGNORE 1 LINES
  (DATE, TIME);"
done

See 4.6.6 mysql_config_editor — MySQL Configuration Utility . 请参见4.6.6 mysql_config_editor-MySQL配置实用程序

File: 0.csv 档案: 0.csv

DATE,TIME
"2000-01-01","00:00:00"
"2001-01-01","12:00:00"
"2002-01-01","23:00:00"

File: 1.csv 档案: 1.csv

DATE,TIME
"2003-01-01","23:00:00"
"2004-01-01","00:00:00"
"2005-01-01","12:00:00"

File: 2.csv 档案: 2.csv

DATE,TIME
"2006-01-01","12:00:00"
"2007-01-01","23:00:00"
"2008-01-01","00:00:00"

MySQL Command-Line: MySQL命令行:

mysql> CREATE DATABASE IF NOT EXISTS `test`;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> USE `test`;
Database changed

mysql> DROP TABLE IF EXISTS `temp_table`;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS `temp_table` (
    ->   `id` SERIAL,
    ->   `DATE` DATE,
    ->   `TIME` TIME
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> \! bash
$ ./load_csv.sh
$ exit
exit

mysql> SELECT `id`, `DATE`, `TIME`
    -> FROM `temp_table`;
+----+------------+----------+
| id | DATE       | TIME     |
+----+------------+----------+
|  1 | 2000-01-01 | 00:00:00 |
|  2 | 2001-01-01 | 12:00:00 |
|  3 | 2002-01-01 | 23:00:00 |
|  4 | 2003-01-01 | 23:00:00 |
|  5 | 2004-01-01 | 00:00:00 |
|  6 | 2005-01-01 | 12:00:00 |
|  7 | 2006-01-01 | 12:00:00 |
|  8 | 2007-01-01 | 23:00:00 |
|  9 | 2008-01-01 | 00:00:00 |
+----+------------+----------+
9 rows in set (0.00 sec)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM