Пакетный цикл цикла через файлы CSV в MySQL

0

Как я могу прокручивать файлы в каталоге (все они являются файлами CSV), а затем входить в mysql с mysql -u root (без каких-либо mysql -u root для простоты) и добавлять их все в таблицу mysql? Это запрос, который быстро загружает файлы в 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;

Как я могу сделать это для каждого файла в каталоге во время входа в mysql?

  • 0
    Все ли фрагменты CSV-файлов для одной и той же таблицы?
  • 0
    Да, и таблица уже была создана мной вручную. Нужна только вставка данных
Показать ещё 1 комментарий
Теги:
csv
batch-file

1 ответ

0
Лучший ответ

Пытаться:

Файл: 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

См. 4.6.6 mysql_config_editor - Утилита настройки MySQL.

Файл: 0.csv

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

Файл: 1.csv

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

Файл: 2.csv

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

Командная строка 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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню