1 (изменено: borus, 2013-02-20 15:38:38)

Тема: UPDATE из файла по составному ключу возможен?

Здравствуйте.

Пробую импортировать данные из csv файла в таблицу с помощью закладки Импорт для открытой таблицы БД в панели phpMyAdmin.

Самого автоинкрементного id во входных данных нет, есть другие два поля, опираясь на которые надо производить либо обновление либо добавление строк. Как это правильно сделать?
Галочка напротив опции "Заместить данные таблицы данными из файла" спасает только если иметь автоинкрементный id во входных данных.

Благодарю

Желаю вам счастья

2

Re: UPDATE из файла по составному ключу возможен?

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

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

3 (изменено: borus, 2013-02-20 15:50:37)

Re: UPDATE из файла по составному ключу возможен?

Hanut сказал:

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

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

Благодарю.

Ключи можно распознать по значению НЕТ в cтолбце "NULL" на закладке Структура открытой таблицы?

А можно в phpmyadmin получить Create синтаксис существующей таблицы?

Желаю вам счастья

4

Re: UPDATE из файла по составному ключу возможен?

borus сказал:

Ключи можно распознать по значению НЕТ в cтолбце "NULL" на закладке Структура открытой таблицы?

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

borus сказал:

А можно в phpmyadmin получить Create синтаксис существующей таблицы?

Конечно. В поле SQL запроса введите (вместо table_name укажите имя таблицы):

SHOW CREATE TABLE `table_name`;

5 (изменено: borus, 2013-02-21 08:26:18)

Re: UPDATE из файла по составному ключу возможен?

Hanut сказал:

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

например мы видем структуру таблицы:
http://storage7.static.itmages.ru/i/13/0221/h_1361424306_9651535_1428de944b.jpeg
ключами будут те, у которых в столбце Дополнительно будет стоять AUTO_INCREMENT? Или есть и другие  признаки ключей таблицы?

Желаю вам счастья

6

Re: UPDATE из файла по составному ключу возможен?

Поле id - это первичный ключ, оно уникально для каждой записи в таблице.

Еще один ключ - это индекс из трех полей component_name, component_table и component. В таблице индексов видно, что содержимое этих трех полей содержит уникальные данные и может использоваться как ключ.

Если поле component (или любое другое поле) во всех записях таблицах уникально, то это поле тоже можно использовать, как ключ.

7

Re: UPDATE из файла по составному ключу возможен?

Hanut сказал:

Поле id - это первичный ключ, оно уникально для каждой записи в таблице.

Еще один ключ - это индекс из трех полей component_name, component_table и component. В таблице индексов видно, что содержимое этих трех полей содержит уникальные данные и может использоваться как ключ.

Если поле component (или любое другое поле) во всех записях таблицах уникально, то это поле тоже можно использовать, как ключ.

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

Желаю вам счастья

8

Re: UPDATE из файла по составному ключу возможен?

borus сказал:

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

Верно.

borus сказал:

А если во входных данных есть несколько "уникальных" столбцов, то phpmyadmin берет первый слева?

Нет, сам phpMyAdmin ничего не берет и не делает. Когда вы формируете SQL запрос, то указываете какое поле (или поля) является уникальным. В данном случае имеется в виду добавление данных из одной таблицы в другую, то есть заранее вам надо импортировать данные в отдельную таблицу и затем связав их по уникальному полю обновить данные в одной из них.