Если нет записи, то INSERT INTO, если есть, то пропустить

Started by ler on 2015-02-11 16:24 — 8 replies, 1810 views

#1
Есть две sql базы юзеров
1 Старая полная
2 Новая подчищеная

Как импотрировать старую базу в новую, при этом не изменяя существующие записи

Начало базы

LOCK TABLES `bb_users` WRITE;
/*!40000 ALTER TABLE `bb_users` DISABLE KEYS */;
INSERT INTO `bb_users` VALUES (-1,0,'Anonymous','d41d8cd98f11b204e9800668ecf8423e',0,0,0,'0',1336167080,'0',0,379,3.00,'russian',2,0,1347700415,0,0,'',0,0,0,0,'','','','','','','','','','',0,'',446,3.00,'default',1,0,0,1),(2,1,'admin',...............
#2
INSERT IGNORE INTO ?
#3
INSERT IGNORE INTO `bb_users` VALUES

Ответ MySQL:

#1136 - Column count doesn't match value count at row 1
#4
ну так какие данные инсертим надо же указать)))))
#5
Не уважаешь 🙂) Было бы куда более странно если бы я сюда скинул весь запрос с хешем админа и 20 тыс юзеров

Еще попробовал эдакое
INSERT INTO `bb_users` VALUES (.....) ON DUPLICATE KEY UPDATE user_id=user_id;

Та же ошибка
#6
как пример
INSERT IGNORE INTO `bb_users` (user_id, username, user_password) VALUES (100, 'test user', 'pass');
#7
Я гениален, импортировал базу в которой на одну колонку меньше. Сейчас нашел другой бэкап.

INSERT IGNORE задумался, импортировал меньше половины а потом выдал
#1062 - Duplicate entry '3986' for key 'PRIMARY'
#8
INSERT IGNORE задумался, импортировал меньше половины а потом выдал
#1062 - Duplicate entry '3986' for key 'PRIMARY'
это выдаст только INSERT INTO ))
#9
Разобрался
В SQL дампе INSERT INTO был разбит на 20 частей, а я прописал IGNORE только для первого INSERT