2016-12-04 15 views
0

У меня есть сценарий, в котором я загружаю CSV-файлы в таблицу с командой LOAD DATA INFILE REPLACE INTO.Уникальная колонка MYSQL на основе другого столбца

Файлы поступают из разных «магазинов», и все различные магазины входят в эту таблицу.

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

storeid = НЕ будет уникальным для каждой строки

code = будет уникальным для каждого магазина идентификатор

Цель состоит в том, чтобы загрузить файлы CSV в таблицу и обновить строку, если что-то изменилось, на основе storeid и кода. Все это сработало, когда я использовал разные базы данных для каждого магазина и имел code как уникальный, но теперь я хочу иметь все магазины в том же db.

Сочетание столбцов, например. 1 + 123 = 1123 = новый уникальный лучший подход?

Заранее спасибо

+0

Вы хотите создать 'code'? Это то, что вы ищете? –

+0

no 'code' - уникальный столбец для каждого хранилища, который существует в файле csv – Tronik

+0

Я думаю, вам не нужно ничего комбинировать! Вместо этого вы можете использовать составной первичный ключ. Он делает то, что вы хотите для вас! –

ответ

1

Я закончил с использованием двух первичных ключей в качестве

CREATE TABLE stock(
    storeid int, 
    code int, 
    PRIMARY KEY (storeid , code) 
); 

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

1

Согласно http://dev.mysql.com/doc/refman/5.7/en/load-data.html:

If you specify REPLACE, input rows replace existing rows. 
In other words, rows that have the same value for a primary key or unique index as an existing row. 

вы должны создать уникальный индекс по столбцам:

CREATE UNIQUE INDEX name_of_the_index ON table_name (storeid, code); 

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

+0

Да, но 'storeid 'и' code' никогда не будут уникальными, когда я загружу их в одну и ту же таблицу, «код» уникален только с помощью storeid. – Tronik

+0

Я полагаю, что конкатенирующий магазин + код на infile = unique - единственный способ – Tronik

+0

Если код уникален для каждого хранилища, то у вас есть уникальная пара (storeid, code), и для этого нужен уникальный индекс для пары столбцов. Или я чего-то не хватает? –

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

  • Нет связанных вопросов^_^