我有一个脚本,我用一个LOAD DATA INFILE REPLACE INTO命令将CSV文件加载到一个表中。
这些文件来自不同的"商店"并且所有不同的商店都进入了这个表。
我的问题是我如何将两个列组合成一个独特的列,或者你可能有其他想法。
storeid
=每行不会是唯一的
code
=对于每个商店ID都是唯一的
目标是将csv文件加载到表中,并根据storeid和代码更新更改的行。
当我为每个商店使用不同的数据库并且code
是唯一的时,这一切都有效,但现在我想让所有商店都在同一个数据库中。
组合列,例如1 + 123 = 1123 =新的唯一最佳方法?
提前致谢
答案 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)
);
结合了两个字段,使它们成为一个独特的,似乎可以用于我的测试。