【发布时间】:2013-01-19 04:17:31
【问题描述】:
我有一个大文件,其中包含大约11 Mb。这是一个 CSV 文件,我需要将该文件的内容加载到 Postgres 数据库中。
我使用 PHP 脚本来完成这项工作,但总是在某个时刻停止。
我为 PHP 内存和其他东西放了大容量,我可以加载更多数据,但不是所有数据。
我该如何解决?我需要清理任何高速缓存吗?在 PHP 中管理大文件的一些秘密?
提前致谢。
更新:添加一些代码
$handler = fopen($fileName, "r");
$dbHandler = pg_connect($databaseConfig);
while (($line = $handler->fgetcsv(";")) !== false) {
// Algorithms to transform data
// Adding sql sentences in a variable
// I am using a "batch" idea that execute all sql formed after 5000 read lines
// When I reach 5000 read lines, execute my sql
$results = pg_query($dbHandler, $sql);
}
【问题讨论】:
-
真正的问题是,为什么要将这么大的文件加载到数据库中?解决这个问题的最好方法是简单地将文件的路径存储在数据库中,然后在文件系统上使用
fread。 -
我必须将数据从旧系统迁移到新系统。数据就是这种格式。我必须在新系统中转换并保存。
-
好的,所以澄清一下,您不想简单地逐字节导入 CSV 文件内容,而是创建一个适合 CSV 的表结构,然后用其中的内容填写数据库中的行CSV 文件?
-
@Guido 你说你有一个 PHP 脚本来完成这项工作 - 你是如何从 CSV 文件中读取数据的?能发下源代码吗? (考虑到它会占用你所有的记忆,你可能会以一种荒谬的方式这样做)。
标签: php postgresql data-migration