2011-04-02 41 views
0

我需要一些我的项目帮助。它是关于一个DVD数据库。在我打算实现一个csv数据函数的时候,从文件中导入dvds与所有信息。 我会在三个步骤中做到这一点。通过三步骤处理csv导入larga数组

步骤1
- 显示数据I要导入,构建阵列
- 导入数据,建立会话阵列

步骤2
- 编辑信息

步骤3
- 表示前结果更新 - 更新数据

到目前为止它的工作原理,但我有一个大文件的问题。 csv数据有20列(标题,流派,情节等),并且对于csv中的每一行,我都会创建一些数组用于接下来的步骤。

当我有更多大约500行时,浏览器在导入时经常崩溃。我没有得到任何回应。

无论如何,现在我试图做这个作为ajax调用过程。好处是,我可以定义系统处理每个呼叫的程序数量,并且用户可以看到系统仍在运行,例如在下载/上传文件时的状态栏。

在我试图找到一些有用的例子说明我可以做到这一点,但我找不到有用的东西到现在。

也许你有一些tipps或一个例子如何可以工作,说每个处理20行,建立数组。

我想使用相同的函数来构建会话数组,在下一步中使用等等。

一些信息:

我使用fgetcsv()从文件中读取行。我经历了行和每列我有不同的查询像是项目编号唯一,标题存在,描述存在等 因此,如果其中一个数据没有进入我得到一个错误,哪行和错误发生的列。

我倒是欣赏任何你的帮助

+0

我建议您提供更多信息,例如您正在使用的代码。 – Smandoli 2011-04-02 11:15:59

回答

1

使用“LOAD DATA INFILE”语法。我使用它的文件向上500MB与3mil行,它需要几秒钟,而不是几分钟。

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

+0

我读到了这个,但在这种情况下,我必须更改完整的代码,这是非常多的工作,所以我跳,我可以继续使用fgetcsv。如果不是,我不会希望如此。 – 2011-04-02 12:21:32

1

虽然这不是你要找的人

500线不应该花费太长的时间来处理直接的答案,所以..继承人另一个想法你。

创建带有字段右边结构的临时表 你可以从它使用select语句的各种独特条目的情节,风格等,而不是让一群沿途阵列然后提取 MySQL的进口将是非常快速的数据

然后您可以根据需要对其进行编辑,并最终将您临时但现在验证的表中的数据插入到最终表中。

就使用ajax而言,您必须重复定时事件来刷新状态,问题不是20行,而是需要一个特定的时间段,因为您的浏览器没有办法要知道,假设csv已上传,并且您可以用20行块处理它。

如果你在一个大的大文本框中输入csv,你可以通过前20行来处理,把剩下的部分传给下一页等,这会让我感到潜在的混乱。

所以,虽然我知道香港专业教育学院没有直接回答你的问题,我希望我给你深思的另类,可能更切实可行的办法

+0

是的,我也认为使用临时表而不是构建数组。但我需要下一步的数据,所以我必须做一个查询并建立新的数组。对于ajax调用,我认为每次我调用通过导入开始和结束的脚本时都会重新打开该文件。但我怎么能用fgetcsv做到这一点? – 2011-04-02 11:45:05

+0

真的,但“选择不同的风格”需要很多时间:) – BugFinder 2011-04-02 12:13:36

+0

我第二种方法(与中间表)。在UI中,您可以添加选项来搜索,浏览器,清理和查找其他表格的值。这些操作将针对中间表执行。一旦用户完成,你可以做任何你需要的数据。将它直接插入到目标表('insert into t(...)select .. from intermediate table')或者只是将数据作为数组返回。 – Ronnis 2011-04-02 12:17:13