2013-12-18 23 views
0

除了簡單的CRUD操作外,我對MySQL/SQL的瞭解是基本的。MySQL存儲過程[複製表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; 

編輯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

您可以使用MySQL: INSERT ... SELECT Syntax將數據從一個表複製到另一個表。
決定兩者中的通用字段並複製相同的字段。

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

如果列大小不匹配,數據截斷髮生,你不能克服,但重新定義目標表列。