- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно добавить в базу информацию из другой базы. Но при импорте, если ID добавляемой строки совпадает с ID уже имеющейся, выдает ошибку и эта строка не вставляется.
Как сделать так, чтоб ID импортируемых строк не учитывался, а присваивался новый? Т.е. если последний ID в таблице 10, вставляемые строки получали ID 11,12,13 и т.д. независимо от того какой ID они до этого имели.
эмм...
Если на поле ID в базе поставить auto_increment то можно вставлять просто вот так
INSERT INTO table (id,field1,field2..) VALUES ('','a','b'...)
или
INSERT INTO table SET `field`='a', `field2`='b'
Т.е. если не указывать собственно ID, он присвоится сам
А просто избежать ошибки можно используя INSERT IGNORE
Если ID жестко прописан в импортируемом файле, то средствами самого SQL так не сделать, надо крутить с скриптингом.
Ну так просто не вставляйте id. Делов-то!
Автоинкремент сработает и всё будет хорошо
Как вариант: в текстовом редакторе заменить "INSERT INTO `имя таблицы` VALUES (" на "INSERT INTO `имя таблицы` VALUES (1000". А потом делать импорт.
Т.е.
INSERT INTO `имя таблицы` VALUES (1, ...
INSERT INTO `имя таблицы` VALUES (2, ...
заменено будет на
INSERT INTO `имя таблицы` VALUES (1001, ...
INSERT INTO `имя таблицы` VALUES (1002, ...
Т.е. если не указывать собственно ID, он присвоится сам
Ну так просто не вставляйте id. Делов-то!
Как сделать, чтоб он не вставлялся при экспорте из первой базы?
Samail добавил 06.08.2009 в 17:28
заменено будет на
INSERT INTO `имя таблицы` VALUES (1001,
grey109, ну у меня сейчас примерно по такому принципу и происходит. (По принципу, чтоб самый маленький ID первой базы, был заведомо больше самого большого ID второй базы). Но переносить данные мне много раз придется, хоть раз но всё равно ошибусь.
Хорошо, другой вариант: открывай импортируемый файл в ворде, CTRL+F
заменить:
VALUES (^#,
на
VALUES ('',
потом заменить
VALUES (^#^#,
на
VALUES ('',
и т.д.
VALUES (^#^#^#,
на
VALUES ('',
ЗЫ: знаю что изврат, но за 2 минуты получешь то что надо.
отключаем автоинкремент: ALTER TABLE bd.table CHANGE col_auto_inc col_auto_inc INT(11) NOT NULL;
импортируем;
Выполняем хитрый скрипт:
set @n:=0;
update table as t set col_auto_inc=(select @n:=@n+1);
включаем автоинкремент:
ALTER TABLE bd.table CHANGE col_auto_inc col_auto_inc INT(11) AUTO_INCREMENT NOT NULL;
Не пользуйтесь этим вариантом если необходимо оставить id некоторых записей старыми
grey109, спасибо за идею.
Тогда наверное лучше: VALUES (^# -> VALUES ( (ткнуть несколько раз) и под конец VALUES ( , -> VALUES ('',
Если один раз создать макрос, то в дальнейшем будет терпимо.
…а нет в phpMyAdmin функции, чтоб просто в дамп содержимое одного из полей не вставлять?
Samail добавил 06.08.2009 в 18:10
Не пользуйтесь этим вариантом если необходимо оставить id некоторых записей старыми
Нужно оставить, от ID адрес ссылки на страницу зависит.
Samail добавил 07.08.2009 в 08:15
Что-то после обработки в Word, дамп вообще не хочет экспортироваться.
Пока решаю обходным путем. Смотрю во второй базе максимальный ID и выполняю в базе источнике запрос: