2012-05-04 2 views
0

Спасибо за просмотр этого. Мне нужно немного помочь в этом проекте, над которым я работаю с MySql.java и mysql load data infile misunderstanding

Для части проекта мне нужно загрузить несколько вещей в базу данных MySql, которую у меня есть.

Информация, которая мне нужна, для каждого столбца в таблице Documentation хранится в текстовых файлах на моем жестком диске.

Например, один столбец в таблице документации является «портом», поэтому у меня есть файл ports.txt на моем компьютере с кучей номеров портов и т. Д.

Я попытался запустить этот MySQL скрипт через PhpMyAdmin, который был

LOAD DATA INFILE 'C:\\ports.txt" INTO TABLE `Documentation`(`ports`). 

Он побежал успешно, так что я пошел, чтобы сделать другие данные нагрузки я, необходимый, который был

LOAD DATA INFILE 'C:\\vlan.txt' INTO TABLE `Documentation` (`vlans`) 

Это также успешно завершена, но он добавил все строки в столбец vlan ПОСЛЕ последней записи в столбец порта.

Почему это произошло? Есть ли что-нибудь, что я могу сделать, чтобы исправить это? Спасибо

+0

Спасибо iridio :) – Alejandro

ответ

1

Почему это произошло?

LOAD DATA Вставляет новые строки в указанную таблицу; он не обновляет существующие строки.

Есть ли что-нибудь, что я могу сделать, чтобы исправить это?

Важно понимать, что MySQL не гарантирует, что таблицы будут храниться в любом конкретном порядке. Таким образом, после вашего первого LOAD порядок, в который были вставлены данные, может быть потерян & - поэтому обычно можно связать такие данные , предшествующие, чтобы импортировать его (например, в качестве столбцов одной и той же записи в одном CSV-файле).

Вы могLOAD ваших данных во временные таблицы, каждый из которых имеет AUTO_INCREMENT колонок и надежда, что такие идентификаторы автоинкрементные остаются выровнены между двумя таблицами (MySQL не имеет абсолютно никакой гарантии, но в вашем случае что каждая запись пронумерована последовательно от 1); после этого вы можете выполнить запрос по следующим строкам: