2013-12-18 1 views
0

간단한 CRUD 연산과 별개로 MySQL/SQL에 대한 지식이 기본입니다.MySQL의 저장 프로 시저 [Copy table 1 -> table 2]

저장 프로 시저를 사용하여 특정 순서가 아닌 특정 특성을 다른 테이블로 이동해야한다면 어떻게 수행 할 수 있습니까?

다음 표는 해당됩니다. 제 1 테이블에서 제 2 테이블로 이동하고 싶습니다.

데이터 유형 크기는 특정 열의 경우와 다릅니다.

CREATE TABLE IF NOT EXISTS `source_cdr` (
    `callstart` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `src` varchar(80) NOT NULL DEFAULT '', 
    `dst` varchar(80) NOT NULL DEFAULT '', 
    `accountcode` varchar(50) NOT NULL, 
    `uniqueid` varchar(100) NOT NULL, 
    `ID` int(11) NOT NULL AUTO_INCREMENT, 
    `callanswer` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `callend` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `disposition` varchar(50) NOT NULL, 
    `cdr_id` int(11) unsigned NOT NULL DEFAULT '0', 
    `pin_code` varchar(4) NOT NULL, 
    `provider` int(11) NOT NULL, 
    PRIMARY KEY (`ID`), 
    KEY `calldate_idx` (`callstart`) USING BTREE, 
    KEY `idx_acc_code_calldate` (`accountcode`,`callstart`) USING BTREE, 
    KEY `uniqueid` (`uniqueid`), 
    KEY `cdr_id` (`cdr_id`), 
    KEY `idx_uniqueid_cdr_id` (`uniqueid`,`cdr_id`) 
) ENGINE=MyISAM; 

-

CREATE TABLE IF NOT EXISTS `destination_cdr` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `calldate` datetime NOT NULL, 
    `source` varchar(80) NOT NULL, 
    `destination` varchar(80) NOT NULL, 
    `account_code` varchar(30) DEFAULT NULL, 
    `pincode` varchar(45) NOT NULL, 
    `duration_call` bigint(20) NOT NULL DEFAULT '0', 
    `duration_talk` bigint(20) NOT NULL, 
    `disposition` varchar(255) NOT NULL, 
    `clid` varchar(80) DEFAULT NULL, 
    `cdr_id` bigint(20) DEFAULT NULL, 
    `vxcdr_id` bigint(20) DEFAULT NULL, 
    `provider` int(11) NOT NULL DEFAULT '0' 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM; 

EDIT 1

행의 예

('2012-03-18 20:54:49', '5796', '0761100866', '103f0124ad510516f33cab132c0a695b', '[email protected]', 308006367, '2012-03-18 20:55:05', '2012-03-18 20:55:51', '200 OK', 2, '', 0), 

감사

+0

'duration_call'과'duration_talk'의 차이점은 무엇입니까? –

+0

@Ravinder, 기간은 다양합니다. 행의 예를 사용하여 편집을 참조하십시오. – mremane

답변

0

당신은 012을 사용할 수 있습니다을 사용하면 한 테이블에서 다른 테이블로 데이터를 복사 할 수 있습니다.
둘 모두에서 공통 필드를 결정하고 동일한 필드를 복사하십시오.

:

INSERT INTO TABLE2(COL1, COLx, ...) SELECT colM, colY FROM TABLE1; 

열이 일치하지 않는 크기 경우, 데이터 잘림 발생, 당신은 그것을 극복하지만, 대상 테이블의 열을 다시 정의 할 수 없습니다.