我收到了如下字符串形式的post数据:
data01,data02
data11,
data21,data22
...
dataxx,dataxx
数据可以长达10.000行,第1列是必需且唯一的,第2列是可选的。
因此,请清理字符串(确保列1唯一(仅在输入数据中-不通过db)、格式等),并将其转换为数组:
[0:
[col1: data01,
col2: data02],
1:
[col1: data11,
col2: ""],
2:
[col1: val11,
col2: val12],
.....
9999:
[col1: dataxx,
col2: dataxx],
]
所以这个数组现在在我的控制器上。。。
现在,我个人认为,最好通过stored proc将该数组发送到mysql,并让sp执行大容量插入任务(如果有更好的方法,请告诉我原因)
问题:
如何将该数组传递给mysql?
我应该在重复键忽略时使用insert select吗?
我需要在视图中显示一个报告,告诉用户哪个数据列1被复制(忽略)
还有一个附带的问题,如果我这么做了:
$validator = Validator::make($request->all(), [
'array.*.column1' => 'unique:items'
]);
它真的会向数据库查询和我一样多的数据量吗(我只是觉得代码性能太贵了
1条答案
按热度按时间a6b3iqyw1#
我的解决办法是什么
首先定义验证规则,它总是在请求时运行,而不是在db上运行。
制作阵列
现在使用
Eloquent::insert();
把数据传给这个。好吧,不要查询数据库。只需对最终数据和请求数据进行数组差分。另外再添加一列,说明是否重复。所以这会节省很多时间。