Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-为大数据验证和导入提供建议_Php_Sql_Sql Server 2012 - Fatal编程技术网

PHP-为大数据验证和导入提供建议

PHP-为大数据验证和导入提供建议,php,sql,sql-server-2012,Php,Sql,Sql Server 2012,我目前正在从excel中开发一个价格导入函数,并寻找关于处理PHP和SQL之间的大型数据集的最佳方法的建议 基本上一个用户可以导入一个文件来更新所有他们的价格表,最多15个。因此,一行示例数据可能如下所示 会员代码|价格表1价格|价格表2价格|价格表3价格|价格表4价格 这些文件最多可包含30000条唯一记录。问题在于需要验证这些数据,并将其返回给用户,表格中突出显示了某些单元格,其中值的价格变化大于40% 产品存储在多个表中,因此查询一行的pricelist值可能需要一秒钟的时间。最初,我尝试

我目前正在从excel中开发一个价格导入函数,并寻找关于处理PHP和SQL之间的大型数据集的最佳方法的建议

基本上一个用户可以导入一个文件来更新所有他们的价格表,最多15个。因此,一行示例数据可能如下所示

会员代码|价格表1价格|价格表2价格|价格表3价格|价格表4价格

这些文件最多可包含30000条唯一记录。问题在于需要验证这些数据,并将其返回给用户,表格中突出显示了某些单元格,其中值的价格变化大于40%

产品存储在多个表中,因此查询一行的pricelist值可能需要一秒钟的时间。最初,我尝试将所有记录一起提取,这也需要一些时间,但如果文件中的记录超过10000条,则该文件会变得太大,sql server无法处理

目前,我有它的工作,但速度非常慢,1000条记录需要9分钟来验证,我一次验证一条记录

如果有人对如何加快这一过程有任何建议,或者对如何最好地处理如此庞大的验证过程有任何建议,我将非常感激。我对任何想法都不感兴趣,只要它们对资源友好且速度更快。

非常感谢,我找到了一个惊人的解决方案。现在,我将数据写入服务器上的csv文件,并使用函数将数据导入临时表,并在删除表之前使用查询交叉引用数据。创建一个包含20000条记录的文件的速度非常快,只需0.3秒。将其插入表中,选择记录,并在服务器获得数据后将其删除。下面是一个示例

CSV格式将文件放在C:\csvtest.txt中

1,TD015022,9000.00,9000.00,9000.00,9000.00,9000.00,9000.00 
2,TD015023,7.00,7.00,7.00,7.00,7.00,7.00 
3,TD015024,14.00,14.00,14.00,14.00,14.00,14.00 
4,TD015025,9000.00,9000.00,9000.00,9000.00,9000.00,9000.00 
SQL

CREATE TABLE CSVTest
(ID INT,
Member_Code VARCHAR(40),
[Frank Test] VARCHAR(40),
[Price List 1] VARCHAR(40),
[Price List 2] VARCHAR(40),
[Price List 3] VARCHAR(40),
[Ten Percent] VARCHAR(40),
[thaka bts test] VARCHAR(40)
)
GO

BULK
INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest
GO
--Drop the table to clean up database.
DROP TABLE CSVTest
GO
希望这能帮助下一个陷入困境的人。
另外,感谢您提供了一个开始使用的工作示例。

我刚才也做了类似的事情。首先导入临时表中的所有文件。用必要的数据填充它,如产品ID等,添加了标识。然后验证只是编写SQL命令,将现有数据与临时数据进行比较。也可以通过这种方式对导入数据进行分页和排序,以便显示给用户。或者只是说记录太多,点击这里下载完整的报告。这不是一个确切的答案,因此这是一个注释,但您可以将数据导入SQL server上的临时表,在T-SQL中运行比较查询,然后将数据返回给PHP吗?我猜SQL上的比较比PHP上的要快,因为缺少从SQL到PHP的移动数据等。汉克斯:伙计们,我很快会给你们一个机会,听起来可能很有效。我只能明天再做,哦,对不起,我不知道