首页 > 解决方案 > Mysql 中第 1 行的列“eordervolumeeuro”的数据被截断。我在将一些数字加载为浮点数时遇到问题

问题描述

我正在尝试从 txt 文件加载数据,对于最后两个字段,我需要将数据加载为浮点数而不是 varchar,但即使我用点替换逗号,如果我为最后两个字段保留 varchar 类型,一切似乎是对的;如果我使用 float Mysql 返回此错误“错误 1265 (01000):第 1 行的列 'eordervolumeeuro' 的数据被截断”。这是我的桌子的描述


mysql> describe ot;
+--------------------------+--------------+------+-----+---------+-------+
| Field                    | Type         | Null | Key | Default | Extra |
+--------------------------+--------------+------+-----+---------+-------+
| sys                      | varchar(100) | YES  |     | NULL    |       |
| client                   | varchar(20)  | YES  |     | NULL    |       |
| ARE                      | int          | YES  |     | NULL    |       |
| SalesDocument            | int          | YES  |     | NULL    |       |
| item                     | int          | YES  |     | NULL    |       |
| salesdoctype             | varchar(20)  | YES  |     | NULL    |       |
| POtype                   | varchar(15)  | YES  |     | NULL    |       |
| profitcenter             | varchar(15)  | YES  |     | NULL    |       |
| orderquantity            | int          | YES  |     | NULL    |       |
| quantityunit             | varchar(100) | YES  |     | NULL    |       |
| material                 | varchar(100) | YES  |     | NULL    |       |
| MLFB                     | varchar(100) | YES  |     | NULL    |       |
| GCK                      | varchar(30)  | YES  |     | NULL    |       |
| PCK                      | varchar(30)  | YES  |     | NULL    |       |
| description              | varchar(100) | YES  |     | NULL    |       |
| orderchannelconsolidated | varchar(100) | YES  |     | NULL    |       |
| customer                 | varchar(15)  | YES  |     | NULL    |       |
| IFA                      | varchar(50)  | YES  |     | NULL    |       |
| salesorg                 | varchar(100) | YES  |     | NULL    |       |
| salesoffice              | varchar(100) | YES  |     | NULL    |       |
| salesofficename          | varchar(100) | YES  |     | NULL    |       |
| companycountry           | varchar(100) | YES  |     | NULL    |       |
| division                 | varchar(100) | YES  |     | NULL    |       |
| divisiondesc             | varchar(150) | YES  |     | NULL    |       |
| businessUnit             | varchar(100) | YES  |     | NULL    |       |
| createdby                | varchar(100) | YES  |     | NULL    |       |
| createdon                | varchar(100) | YES  |     | NULL    |       |
| ordertype                | varchar(100) | YES  |     | NULL    |       |
| ordervolumeeuro          | float        | YES  |     | NULL    |       |
| eordervolumeeuro         | float(5,5)   | YES  |     | NULL    |       |
+--------------------------+--------------+------+-----+---------+-------+
30 rows in set (0.01 sec)

这是我需要上传的一种数据行

SWP01   100 5180    310799105   1000    ZPCA    DFUE    P50XE2A 1   Piece   8GF9872 8GF9872 P310    5554    DISTRIBUTION TERMINAL BLOCK 4 POLE 100A EDI 1012229 275091843   50Q0    50Q1    LV Direzionale  Italy   QA  SSI LP (SSI045) SI EP   SWE0012S    dic 31 2019 12:00 AM    eOrder - IDOC   53.89   53.89

我对 txt 文件使用 UTF-8,无论如何 ANSI 给了我同样的问题,还有其他问题。

这就是发生的事情:

mysql> load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\test.txt' into table ot fields terminated by '\t' 
ignore 1 lines;
ERROR 1265 (01000): Data truncated for column 'eordervolumeeuro' at row 1



 ot    | CREATE TABLE `ot` (
  `sys` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `client` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ARE` int DEFAULT NULL,
  `SalesDocument` int DEFAULT NULL,
  `item` int DEFAULT NULL,
  `salesdoctype` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `POtype` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `profitcenter` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `orderquantity` int DEFAULT NULL,
  `quantityunit` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `material` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `MLFB` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `GCK` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `PCK` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `description` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `orderchannelconsolidated` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `customer` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `IFA` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `salesorg` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `salesoffice` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `salesofficename` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `companycountry` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `division` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `divisiondesc` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `businessUnit` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `createdby` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `createdon` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ordertype` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ordervolumeeuro` float DEFAULT NULL,
  `eordervolumeeuro` float(5,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |

提前致谢。

标签: mysqlsql

解决方案


推荐阅读