2013-02-14 3 views
0

У меня вопрос о наилучшем способе импорта длинной таблицы csv, а затем для преобразования в две таблицы. Это очень облегченная версия, но для этой цели подходит:Преобразование большого импорта данных

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

я понял, что лучший способ для управления этой информации было построить две таблицы:

Первое, являющееся поле идентификатора автоматического приращения и группа по первым трех столбцам.

Это дает приятную компактную таблицу основных групп моих данных.

Вторая таблица должна быть каждой строкой, но вместо хранения всех повторяющихся данных я сохраняю только столбцы переменных d, e и f вместе с полем идентификатора автоинкремента, которое я генерирую при импорте в первую таблицу.

Мой вопрос в том, как я могу получить идентификатор из первой таблицы - мой единственный способ получить эту таблицу, чтобы найти идентификатор, а затем сделать вставку во вторую таблицу?

a,b,c,d,e,f 

09/02/2013,A1,1,18503112043123,11,2.1219 
09/02/2013,A1,1,44102576116476,73,14.0817 
09/02/2013,A1,1,66918345446536,134,25.8486 
09/02/2013,A1,2,62009507978229,10,1.929 
09/02/2013,A1,2,92278593945574,55,10.6095 
09/02/2013,B1,1,50474606002324,90,17.361 
09/02/2013,B1,1,59697581427675,7,1.3503 
09/02/2013,B1,1,86298530583467,51,9.8379 
09/02/2013,B1,2,34885481077847,80,15.432 
09/02/2013,B1,2,25479347211047,164,31.6356 
09/02/2013,B1,3,56270556524425,6,1.1574 
09/02/2013,C1,1,57680166803098,24,4.6296 
09/02/2013,C1,1,72778510788287,77,14.8533 
09/02/2013,C1,1,26084111080146,140,27.006 
09/02/2013,C1,1,31435464483578,361,65.5937 
09/02/2013,C1,2,29457756254473,492,89.3964 
09/02/2013,C1,2,68414218104066,293,53.2381 

EDIT

У меня есть два запроса в виде: 1: Моя родительской таблица, которая имеет автоматическое приращение вставки в parent_table выберите нуль, а, б, в из таблицы группы с помощью , b, c

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

Я не понимаю, как вытащить идентификатор обратно, не делая запрос обратно в родительской таблице, как я ввода данных в таблицу детской

ответ

1

Вы можете использовать PDO::lastInsertId или mysqli::$insert_id для получения

автоматически генерируемый идентификатор, используемый в последнем запросе.

Просто сделайте вставку, а затем извлечь идентификатор

$sth = $pdo->prepare("insert into first_table (a, b, c) values (?, ?, ?)"); 
$sth->execute(array('2013-02-09', 'A1', 1)); 
$id = $pdo->lastInsertId(); 

Там также является MySQL LAST_INSERT_ID(). Вы можете проверить

insert into second_table (first_table_id, d, e, f) values (LAST_INSERT_ID(), ...) 

но я никогда не пробовал это сам.

+0

OK - так что мой лучший метод - это сделать через php, а не непосредственно в mysql. Это означает, что цикл по строке строк по строке не равен – user1479891

+0

@ user1479891 Существует также 'last_insert_id()' из mysql, см. Обновленный ответ. –

Смежные вопросы