Php 将大文件加载到数据库中
我有一个大约11MB的大文件。这是一个CSV文件,我需要将该文件的内容加载到Postgres数据库中 我使用PHP脚本来完成这项工作,但总是在某个时刻停止 我为PHP内存和其他东西放了很大的空间,我可以加载更多的数据,但不是所有的数据 我怎样才能解决这个问题?是否有需要清理的缓存?在PHP中管理大文件的一些秘密 提前谢谢 更新:添加一些代码Php 将大文件加载到数据库中,php,postgresql,data-migration,Php,Postgresql,Data Migration,我有一个大约11MB的大文件。这是一个CSV文件,我需要将该文件的内容加载到Postgres数据库中 我使用PHP脚本来完成这项工作,但总是在某个时刻停止 我为PHP内存和其他东西放了很大的空间,我可以加载更多的数据,但不是所有的数据 我怎样才能解决这个问题?是否有需要清理的缓存?在PHP中管理大文件的一些秘密 提前谢谢 更新:添加一些代码 $handler = fopen($fileName, "r"); $dbHandler = pg_connect($databaseConfig); w
$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);
}
如果您可以直接访问服务器(并且您不使用某些subversion软件),postgre有一个更好的选择,它对资源的要求要低得多。请记住,php是一种缓慢且消耗资源的语言
COPY my_table_name FROM '/home/myfile.csv' DELIMITERS ',' CSV
真正的问题是,为什么要将这么大的文件加载到数据库中?解决这一问题的最佳方法是简单地将文件路径存储在数据库中,然后在文件系统上使用
fread
。检查此项我必须将数据迁移到旧系统到新系统。数据就是这种格式的。我必须在新系统中进行转换和保存。好的,为了澄清您不想简单地逐字节导入CSV文件内容,而是创建一个适合CSV的表结构,然后用CSV文件中的内容填写数据库中的行?@gui你说你有一个PHP脚本来完成这项工作吗?你是如何从CSV文件中读取数据的?你能发布源代码吗?(考虑到它会占用你所有的记忆,你可能会用一种荒谬的方式来做)。