날짜와 시간이 매우 성가신 증명할 수있는 두 개의 컬럼으로 분할 데
감사를 검색하지만 나는 온라인 아무것도 찾을 수 없습니다, 그래서 나는 그 일을 피할 거라고하지 않는 한 강력한 기술적 인 이유가 있었다. 당신의 분 문제에 관해서는
, 당신이 필요하면. 가장 간단한 방법에 UNIQUE
제약 조건을 적용 할 수있는 열을 나눈 초에 분 시리얼, 또는 시대의 시간을 사용하는 것입니다 60.
열 c 추가 all epoch_minute
이 INT
인 경우이를 UNIQUE
인덱스 제약 조건을 부여하고 해당 값과 동일한 값으로 채 웁니다. 그런 다음 INSERT IGNORE
또는 INSERT ... ON DUPLICATE KEY
유형 트리거를 사용하여 분당 반복을 처리 할 수 있습니다. 이것은 첫 번째 레코드를 유지할 것인지, 매분마다 마지막 레코드를 유지할 것인지에 달려 있습니다.
당신은 UNIX_TIMESTAMP()
기능을 사용하여 이전 값을 마이그레이션 할 수 있습니다, table_name
라는 테이블에 주어진 예를 들어
UPDATE table_name SET epoch_minute = UNIX_TIMESTAMP(date_column)/60
을 고유 열 제약이있는 값을받을 새 테이블을 준비 :
을
INSERT IGNORE INTO _table_name (column_a, column_b, epoch_minute)
SELECT column_a, column_b, UNIX_TIMESTAMP(date_column)/60
FROM table_name;
,536 :
CREATE TABLE _table_name LIKE table_name;
ALTER TABLE _table_name ADD COLUMN epoch_minute INT;
CREATE UNIQUE INDEX index_table_name_epoch_minute ON _table_name (epoch_minute);
그럼 당신은 중복을 건너 뛸 INSERT IGNORE
을 사용할 수 있습니다
마지막으로, 스왑 테이블 :
RENAME TABLE table_name TO table_name_old, _table_name to table_name;
매분마다 행을 삽입하는 것이 더 바람직하지 않습니까? – wvdz
어쩌면 데이터베이스에 거대한 CSV 파일 (5GB의 5 개 CSV 등)을 가져 와서 나는 이미 많은 처리를 했었지만 내가하는 말은 어떻게하면 좋을까요? – adrCoder
이 테이블에 다른 기본 키가 있습니까? – kamoor