MYSQL基于其他列的唯一列

时间:2016-12-04 11:08:17

标签: mysql csv unique load-data-infile

我有一个脚本,我用一个LOAD DATA INFILE REPLACE INTO命令将CSV文件加载到一个表中。

这些文件来自不同的"商店"并且所有不同的商店都进入了这个表。

我的问题是我如何将两个列组合成一个独特的列,或者你可能有其他想法。

storeid =每行不会是唯一的

code =对于每个商店ID都是唯一的

目标是将csv文件加载到表中,并根据storeid和代码更新更改的行。 当我为每个商店使用不同的数据库并且code是唯一的时,这一切都有效,但现在我想让所有商店都在同一个数据库中。

组合列,例如1 + 123 = 1123 =新的唯一最佳方法?

提前致谢

2 个答案:

答案 0 :(得分: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);

这两列上的组合主键也可以完成这项工作。

答案 1 :(得分:1)

我最终使用了两个主键

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

结合了两个字段,使它们成为一个独特的,似乎可以用于我的测试。