본문 바로가기
MySql

MySQL 데이터가 잘리는 이유는 무엇입니까? 경고 | 1265 | 열에 대해 잘린 데이터

by 베이스 공부 2020. 11. 20.
반응형

date_of_birth와 date_of_death 모두에 NULL을 추가하려고 시도했지만 도움이되지 않았습니다. 데이터가 잘리는 이유는 무엇입니까? (특히 현재 데이터가 없기 때문에 ...)

또한 경고 1261을 전혀 이해하지 못합니다. 행 5는 행 1-4와 다르지 않습니다.

감사!

다음 스크립트 :

-- create the people table
DROP TABLE IF EXISTS people;

CREATE TABLE people (
full_name varchar (50) NOT NULL,
people_ID varchar (15) NOT NULL,
date_of_birth DATE,
date_of_death DATE,
PRIMARY KEY(people_ID))
ENGINE = INNODB;

LOAD DATA LOCAL INFILE "People.csv"
INTO TABLE people
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;  

다음과 같은 오류가 발생합니다.

Query OK, 5 rows affected, 10 warnings (0.00 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 10

mysql> show warnings;
+---------+------+----------------------------------------------------+
| Level   | Code | Message                                            |
+---------+------+----------------------------------------------------+
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 1 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 1 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 2 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 2 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 3 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 3 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 4 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 4 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 5 |
| Warning | 1261 | Row 5 doesn't contain data for all columns         |
+---------+------+----------------------------------------------------+
10 rows in set (0.00 sec)

mysql> select * from people;
+-------------------+-----------+---------------+---------------+
| full_name         | people_ID | date_of_birth | date_of_death |
+-------------------+-----------+---------------+---------------+
| Harry Dunham      | H_Dunham  | 0000-00-00    | NULL          |
| Julien Bryan      | J_Bryan   | 0000-00-00    | 0000-00-00    |
| Jules V.D. Bucher | J_Bucher  | 0000-00-00    | 0000-00-00    |
| Miriam Bucher     | M_Bucher  | 0000-00-00    | 0000-00-00    |
| Paul Bowles       | P_Bowles  | 0000-00-00    | 0000-00-00    |
+-------------------+-----------+---------------+---------------+
5 rows in set (0.01 sec)

내 .csv는 다음과 같습니다.

FullName,People_ID,DOB,DOD
Jules V.D. Bucher,J_Bucher,,
Miriam Bucher,M_Bucher,,
Julien Bryan,J_Bryan,,
Paul Bowles,P_Bowles,,
Harry Dunham,H_Dunham,,

 

해결 방법

 

아마도 Mysql이 빈 문자열 ""를 날짜 열에 강제 하려고하지만 열은 DATE 형식의 데이터 만 허용하므로 적절한 형식으로 변환됩니다. 날짜 열에 "" (공백) 대신 "0000-00-00"이 포함되도록 CSV를 조정하고 더 적은 수인지 확인합니다. 경고.

1261 경고는 더 비슷해 보입니다. Mysql이 CSV 가져 오기를 처리하는 방식에있어 무해하지만 성가신 단점이 있습니다. 가져온 데이터가 완전하지 않다는 증거가 없으면 걱정하지 않아도됩니다. .

 

참조 페이지 https://stackoverflow.com/questions/30008676

 

 

반응형

댓글