Почему нельзя загрузить данные в MySQL: - PullRequest
0 голосов
/ 29 апреля 2019

Таблица Mysql price структура:

CREATE TABLE `price` (
  `code` varchar(12) ,
  `date` date ,
  `open` decimal(8,2) ,
  `high` decimal(8,2) ,
  `low` decimal(8,2) ,
  `close` decimal(8,2) ,
  `amount` decimal(20,2) ,
  `volume` decimal(16,2) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Вот файл data.csv, который я хочу загрузить в таблицу цен.

000046.XSHE,19940912,20.0,20.0,16.0,16.92,121262592.0,7043300
000046.XSHE,19940913,17.0,17.32,16.0,16.46,47195860.0,2810800
000046.XSHE,19940914,16.3,16.4,15.49,15.95,24762992.0,1558300

Максимальное значение для объема47195860.0 в диапазоне decimal(20,2).

Загрузить его с помощью команды mysql load.

LOAD DATA local INFILE 'data.csv'
    INTO TABLE finance.price
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    lines terminated by '\r\n';

Произошла информация об ошибке:

Query OK, 1 row affected, 1 warning (0.09 sec)       
Records: 1  Deleted: 0  Skipped: 0  Warnings: 1

Покажите это, чтобы узнать причину.

show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'volume' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

Число 121262592.0 настолько ниже, чем decimal(20,2), поэтому Data truncated for column 'volume' at row 1, загружена только одна строка.

select * from price;
+-------------+------------+-------+-------+-------+-------+--------------+------------+
| code        | date       | open  | high  | low   | close | amount       | volume     |
+-------------+------------+-------+-------+-------+-------+--------------+------------+
| 000046.XSHE | 1994-09-12 | 20.00 | 20.00 | 16.00 | 16.92 | 121262592.00 | 7043300.00 |
+-------------+------------+-------+-------+-------+-------+--------------+------------+
1 row in set (0.00 sec)

1 Ответ

1 голос
/ 30 апреля 2019
LOAD DATA local INFILE 'data.csv'
    INTO TABLE finance.price
    FIELDS TERMINATED BY ','
    OPTIONAL  ENCLOSED BY '"'
    lines terminated by '\r\n';
...