powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / BULK INSERT при двух связанных таблицах ?
7 сообщений из 7, страница 1 из 1
BULK INSERT при двух связанных таблицах ?
    #39021611
weblloyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть интерфейс добавления большого объема данных в 2 таблицы MySQL.

Проблема в том, что эти две таблицы связаны между собой по FK (один к одному) и я не могу использовать BULK INSERT (т.к. необходимо сначала вставить запись в одну таблицу, узнав ее PRIMARY KEY, затем вставить запись в другую связанную таблицу используя полученный PRIMARY ID ).

А это получается цикл из нескольких тысячей INSERT друг за другом.

Как можно оптимизировать этот процесс?

Есть одна особенность - первая таблица имеет уникальных индекс помимо PRIMERY KEY (заведомо известный при вставке данных), будет ли хорошей идеей использовать его вместо PRIMERY KEY (это уникальная строка) и тогда проблема пакетной вставке будет решена?
...
Рейтинг: 0 / 0
BULK INSERT при двух связанных таблицах ?
    #39021847
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weblloydэти две таблицы связаны между собой по FK (один к одному)Т.е. в одной таблице поле связи - PK, а в другой UNIQUE? или в обеих таблицах UNIQUE?

Кто мешает булькнуть в одну таблицу, а потом селект из неё и исходных - во вторую?

Но вообще разумнее влить всё во временную таблицу, а оттуда раздать двумя запросами в таблицы, или одним во вьюшку.
...
Рейтинг: 0 / 0
BULK INSERT при двух связанных таблицах ?
    #39021955
weblloyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaКто мешает булькнуть в одну таблицу, а потом селект из неё и исходных - во вторую?

А как сделать селект именно тех данных которые только что булькнули ? и сопоставить связи при втором инсерте во вторую таблицу?
...
Рейтинг: 0 / 0
BULK INSERT при двух связанных таблицах ?
    #39021966
weblloyd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мои 2 таблицы, player связана с serial через player.serial_id

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE `serial` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `serial` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `serial` (`serial`),
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `player` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mac` varchar(255) NOT NULL,
  `serial_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mac` (`mac`),
  UNIQUE KEY `serial_id` (`serial_id`),
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;



И я делаю парсинг примерно такого файла:

00:16:fb:86:d0:d7 | BW678DS78
00:16:fb:86:d0:c5 | JFH76GJH
00:16:fb:87:af:2e | JKKJHD767
00:16:fb:87:af:36 | STF67JG67

где соответственно надо добавить серийник (BW678DS78) в таблицу serial, мак (00:16:fb:86:d0:d7) в таблицу player и связать их друг с другом. Строк в таких файлах может насчитывать несколько тысяч.
...
Рейтинг: 0 / 0
BULK INSERT при двух связанных таблицах ?
    #39022032
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weblloydВот мои 2 таблицы, player связана с serial через player.serial_idНи хрена не связаны. Нет FOREIGN KEY.
...
Рейтинг: 0 / 0
BULK INSERT при двух связанных таблицах ?
    #39022714
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaweblloydВот мои 2 таблицы, player связана с serial через player.serial_idНи хрена не связаны. Нет FOREIGN KEY.

я тоже за то что создать денормализованную одну таблицу, в неё лить дамп, а из неё раскидать в нормализованные две.

да, для этого надо дамп переделать или откуда берутся вообще данные для балк инсерт

ЗЫ
мы все исходим из того, что ТС вставку делает в существующие данные поэтому не может вставку делать со значениями первичного ключа.
ЗЫЗЫ имеено для случая такого майкрософт настоятельно рекомендует уже лет 10 использовать гиуд вкачестве первичного ключа.
...
Рейтинг: 0 / 0
BULK INSERT при двух связанных таблицах ?
    #39023027
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453ЗЫЗЫ имеено для случая такого майкрософт настоятельно рекомендует уже лет 10 использовать гиуд вкачестве первичного ключа.когда лет через 50 начнутся глобальные коллизии гуидов... а впрочем, эмир к тому времени уже скорее всего помрёт :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / BULK INSERT при двух связанных таблицах ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]