오류 1265.txt 파일에서 데이터를 로드하려고 할 때 열에 대한 데이터가 잘림
mysql 테이블에 테이블이 있습니다.
create table Pickup
(
PickupID int not null,
ClientID int not null,
PickupDate date not null,
PickupProxy varchar (40) ,
PickupHispanic bit default 0,
EthnCode varchar(2),
CategCode varchar (2) not null,
AgencyID int(3) not null,
Primary Key (PickupID),
FOREIGN KEY (CategCode) REFERENCES Category(CategCode),
FOREIGN KEY (AgencyID) REFERENCES Agency(AgencyID),
FOREIGN KEY (ClientID) REFERENCES Clients (ClientID),
FOREIGN KEY (EthnCode) REFERENCES Ethnicity (EthnCode)
);
내 txt 파일의 샘플 데이터
1065535,7709,1/1/2006,,0,,SR,6
1065536,7198,1/1/2006,,0,,SR,7
1065537,11641,1/1/2006,,0,W,SR,24
1065538,9805,1/1/2006,,0,N,SR,17
1065539,7709,2/1/2006,,0,,SR,6
1065540,7198,2/1/2006,,0,,SR,7
1065541,11641,2/1/2006,,0,W,SR,24
를 이용하여 제출하려고 할 때
LOAD DATA INFILE 'Pickup_withoutproxy2.txt' INTO TABLE pickup;
오류를 던집니다.
오류 코드: 1265.'픽업' 열에 대한 데이터가 잘립니다.1열의 신분증
MySQL 5.2를 사용하고 있습니다.
이 오류는 Pickup_without 프록시2에서 하나 이상의 행을 의미합니다.txt 파일의 첫 번째 열의 값이 int보다 큽니다(PickupId 필드).
Int는 -2147483648 ~2147483647 사이의 값만 허용할 수 있습니다.
데이터를 검토하여 무슨 일이 일어나고 있는지 확인합니다.txt 파일이 너무 커서 보기 어렵다면 varchar 데이터 형식의 임시 테이블에 로드해 볼 수 있습니다.데이터베이스에 한 번 로드된 int를 확인할 수 있을 정도로 쉽습니다.
행운을 빌어요.
당신은 를 .FIELDS TERMINATED BY ','
기본적으로 탭으로 구분한다고 가정합니다.
저도 같은 문제가 있었습니다.테이블 구조에서 ENUM 값을 편집하고 싶었습니다.이전에 저장된 행과 새 ENUM 값이 저장된 값을 포함하지 않기 때문에 문제가 발생했습니다.
솔루션이 MySql 테이블에 저장된 이전 행을 업데이트하고 있습니다.
그 이유는 mysql이 텍스트 파일의 행 기호가 마지막으로 지정된 열 뒤에 끝날 것을 예상하기 때문이며, 이 기호는 char(10) 또는 '\n'입니다.텍스트 파일을 만든 운영 체제에 따라 달라지거나 텍스트 파일을 직접 만든 경우 다른 조합이 될 수 있습니다(Windows에서는 행 구분자로 '\r\n'(chr(13)+chr(10)).따라서 Windows에서 생성한 텍스트 파일을 사용하는 경우 LOAD 명령에 "LINES TERMINED BY '\r\n'" 접미사를 추가합니다.그렇지 않으면 텍스트 파일에서 행이 어떻게 구분되어 있는지 확인합니다.기본적으로 mysql에서 char(10)를 행 구분 기호로 기대합니다.
기존 버전을 변환할 때 이 문제가 발생했습니다.varchar
에 열을 올립니다.enum
그이 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .enum
의 허용된 값 목록입니다.그래서 만약 당신의enum
값만 허용할 것입니다, 라고 말합니다.('dog', 'cat')
하지만 사이에 불화가 있습니다.bird
에서,에서,는MODIFY COLUMN
이 오류와 함께 실패합니다.
ENUM 값('0', '1')이 있는 열로 이 문제를 해결했습니다.
새 레코드를 저장하려고 할 때 ENUM 변수에 대해 값 0을 할당하고 있었습니다.
솔루션의 경우:ENUM 변수 값을 0에서 1로, 1에서 2로 변경했습니다.
저도 같은 문제가 있었습니다. 제 실수는 이전에 정의하지 않은 값을 서버에 로드하려고 했던 것입니다.ENUM()
.
예를들면,ENUM('sell','lend')
그리고 그 가치를 실으려고 노력하고 있었습니다.return
그 칼럼에.로딩이 필요해서 추가했습니다.ENUM
다시 로드합니다.
데이터에 여유 공간, 탭, 새 줄 또는 다른 문자가 열에 있을 때 동일한 경고가 표시됩니다.decimal(10,2)
이를 해결하기 위해 가치에서 캐릭터를 제거해야 했습니다.
제가 처리한 방법은 이렇습니다.
LOAD DATA LOCAL INFILE 'c:/Users/Hitesh/Downloads/InventoryMasterReportHitesh.csv'
INTO TABLE stores_inventory_tmp
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@col1, @col2, @col3, @col4, @col5)
SET sku = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col1,'\t',''), '$',''), '\r', ''), '\n', ''))
, product_name = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col2,'\t',''), '$',''), '\r', ''), '\n', ''))
, department_number = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col3,'\t',''), '$',''), '\r', ''), '\n', ''))
, department_name = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col4,'\t',''), '$',''), '\r', ''), '\n', ''))
, price = TRIM(REPLACE(REPLACE(REPLACE(REPLACE(@col5,'\t',''), '$',''), '\r', ''), '\n', ''))
;
이 대답에서 힌트를 얻었습니다.
csv 파일을 mysql xampp로 가져오는 동안 나는 같은 문제에 직면했습니다.'\n'으로 끝나는 선과 '\r\n'으로 끝나는 선 대신 '\r'로 끝나는 선을 사용했습니다.
이 오류는 라인이 없는 결과일 수도 있지만,
FIELDS SPECIFIED BY ','
(콤마를 사용하여 필드를 구분하는 경우) MySQL 문서의 이 페이지에 설명된 대로 MySQL 구문에서 사용합니다.
언급URL : https://stackoverflow.com/questions/14764080/error-1265-data-truncated-for-column-when-trying-to-load-data-from-txt-file
'programing' 카테고리의 다른 글
블록 순환 분포를 얻는 방법은? (0) | 2023.09.16 |
---|---|
WordPress 퍼말링크 시스템은 어떻게 작동합니까? (0) | 2023.09.16 |
동일한 페이지에 리액트 루트(수백 개)가 여러 개일 경우 성능 문제가 발생합니까? (0) | 2023.09.16 |
Oracle: 시퀀스에 대해 어떤 권한을 부여해야 합니까? (0) | 2023.09.16 |
추상 클래스가 컨트롤러의 작업에서 매개 변수가 될 수 있습니까? (0) | 2023.09.16 |