안녕하세요. 어쩌다 가끔 메뉴얼 보면서 쓰는 초보입니다.
사용환경은 일단
윈도우즈에 Mysql 5.1.2600 이고
엑셀 자료를 탭으로 분리한 텍스트 파일을 load data infile... 명령으로 테이블에 넣으려고 합니다.
테이블은 아래와 같습니다.
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | varchar(30) | YES | | NULL | |
| short | text | YES | | NULL | |
| fold1 | float | YES | | NULL | |
| fold2 | float | YES | | NULL | |
| fold3 | float | YES | | NULL | |
| fold4 | float | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
문제는 short 또는 fold1이라는 컬럼에 빈값들이 존재하는 레코드가 다수 존재하는데 이때문에 자료를 넣으려고 하면 다음과 같은 오류가 납니다.
ERROR 1265 (01000): Data truncated for column 'fold1' at row 37117
37117 레코드는 빈값이 처음 나타나는 레코드 입니다. 테이블에서 관련 컬럼의 default 값을 0 또는 0.0으로도 바꿔보는 등등을 시도해 봤지만 전혀 소용이 없었습니다.
구글링으로 어떤사람이 아래와 같은 방법을 썼다는 걸 봤는데 그대로 입력했더니 여전히 오류만 뱉어 냅니다. 물론 다른 오류메세지로.... (아래 mytable 부분과 varcharfield1, 2는 제가 가진 것으로 바꿨습니다만 다른 뭘 또 바꿔야 되는지 초보라서.... )
LOAD DATA INFILE 'c:/txtfile.txt' REPLACE INTO TABLE mytable FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n' (varcharfield1, varcharfield2, @numfield) set intfield = (0 + @numfield);
fold 컬럼에는 숫자값들이 들어가서 속성을 float으로 했는데 다른 걸로 써야하는지....
뭣모르고 닥질하는 초보를 좀 도와주세요....
|