の列名があるテーブルがありますSP varchar(10) NOT NULL
。その列を常に一意にしたいので、その列に一意のインデックスを作成しました。次のように私のテーブルスキーマ:
CREATE TABLE IF NOT EXISTS `tblspmaster` (
`CSN` bigint(20) NOT NULL AUTO_INCREMENT,
`SP` varchar(10) NOT NULL,
`FileImportedDate` date NOT NULL,
`AMZFileName` varchar(50) NOT NULL,
`CasperBatch` varchar(50) NOT NULL,
`BatchProcessedDate` date NOT NULL,
`ExpiryDate` date NOT NULL,
`Region` varchar(50) NOT NULL,
`FCCity` varchar(50) NOT NULL,
`VendorID` int(11) NOT NULL,
`LocationID` int(11) NOT NULL,
PRIMARY KEY (`CSN`),
UNIQUE KEY `SP` (`SP`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10000000000 ;
誰かが重複レコードを挿入しようとした場合、そのレコードをセカンダリ テーブル名に挿入する必要がありますtblDuplicate
。
私はこの質問MySQLを経験しました- 挿入エラーを無視します:重複したエントリですが、代わりに
INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;
重複する行を別のテーブルに挿入できますか?
メイン テーブル スキームまたはインデックス列でどのような変更を行う必要がありましたか?
**注: データは、Excel または CSV ファイルをインポートすることによって挿入されます。Excel ファイルには通常、50 万から 80 万のレコードが含まれますが、1 つの列しかありません **