У меня есть одна таблица:
CREATE TABLE t (
id INT NOT NULL PRIMARY KEY,
x INT NOT NULL,
y INT NOT NULL );
Данные находятся в двух файлах: у одного файла есть пара значений (id, x)
, а в другом файле есть пара значений (id, y)
. В каждой из них около 20 миллионов строк. Большинство значений id
, которые появляются в файле x
, также отображаются в файле y
и наоборот.
Можете ли вы предложить, как загрузить значения id
, x
и y
из двух файлов в t
?
Если вы работаете на Unix-машине, у вас может быть доступ к "join", который может объединить ваши 2 файла вместе и создать их на stdout. Массовая загрузка стандарта непосредственно в mysql. Это уменьшит количество операций записи на диск.
Загрузите каждый из файлов в две отдельные таблицы, используя LOAD DATA INFILE. Затем используйте INSERT INTO... SELECT для вставки данных в таблицу t.
(id=23, x=55)
а в другой есть строка с (id=23, y=126)
, мне нужно получить строку (id=23, x=55, y=126)
в t
. Вставить первое в t
просто. Но при вставке со второго появятся дубликаты ключей. Работает ли INSERT INTO SELECT ... ON DUPLICATE KEY UPDATE y = ... для этого?