php恢复文件导入

时间:2017-03-26 08:41:54

标签: php mysql

我有一个客户端要求具有可恢复文件import.i将告诉导入的用例文件是对应于3个mysql表数据的csv。在上传期间,如果发生任何类型的警告,如名称太长,描述太久它应该停止执行并向client.client显示警告有2个选项忽略并重新上传如果他忽略然后文件上传将从错误发生的点恢复其他选项很简单只需重新上传文件。我应该在显示错误消息后继续执行脚本吗?我该怎么跟踪没有csv线路完成?

现在让我解释一下我的计划。我首先使用jquery ajax。保存每行代码后保存会话变量中执行的行数。如果用户忽略警告。那么我将重新上载csv并等到行没有匹配会话变量中的那个。这是优雅的做事方式吗?之所以我提出这个问题是每次用户根据我的逻辑忽略错误消息时他/她需要等到会话中存储的行到达。请用一个例子来解释它们是否是解决这个问题的更好方法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

可能的工作流程

  1. 分析CSV文件的每一行并将其加载到专门为此目的创建的空表中。该表应包含仅存储从CSV文件导入的列的列。它还可以包含其他列来存储导入期间计算的数据; F.E.如果输入数据的处理和验证需要查找 在数据库中已存在的数据中,找到的值也应存储在导入表中,以避免再次运行相同的查询。
  2. 忽略CSV文件中无法导入但跟踪其信息(内容,失败原因等)的行。您需要将信息显示给用户。
  3. 如果CSV文件中没有错误,则将(已验证的)数据从特殊表移动到目标表中,并将其称为成功。
  4. 如果有错误显示给用户。
    • 如果用户决定重新加载CSV,请从步骤1重新开始。
    • 如果用户决定忽略错误,请继续执行步骤3.
  5. 优点

    • 无需再次上传CSV文件。
    • 无需跟踪进度。

    缺点

    • 如果文件很大,则完成大量工作然后丢弃,错误位于CSV文件的开头,用户决定再次上传。这可以通过使用包含CSV文件原始行的额外数据库表和额外步骤(步骤0)在算法中得到改进:将CSV文件加载到其中然后使用此表而不是CSV文件作为输入数据步骤1.当一行有效时,将其从CSV表中删除;当一行无效时,请跳至步骤4.当用户决定忽略该错误时,请继续执行步骤1.