我有一个很大的.txt文件(73,000行),我需要将该文件中的数据存储在一个数组中。
以下是文件外观的示例,它只是以这种方式重复,每一行都是这样的。
SELECT t.*, totalRevenue/yea
FROM (select round(days_between( MIN(PROD_DATE) , MAX(PROD_DATE))/365) as yea,
SUM(PRICE) as totalRevenue, totalRevenue/yea as perc
from AAA
) t
我想用这样的键把它放到一个数组中:
2016-05-27 11:04:16: QParRFSum=1574.00 QParRFSumMean=6.05 QParSuspSum=83.00
2016-05-27 11:14:07: QParRFSum=1537.00 QParRFSumMean=5.91 QParSuspSum=96.00
2016-05-27 11:14:07: QParRFSum=1537.00 QParRFSumMean=5.91 QParSuspSum=96.00
2016-05-27 11:24:07: QParRFSum=1405.00 QParRFSumMean=5.40 QParSuspSum=0.00
2016-05-27 11:24:07: QParRFSum=1405.00 QParRFSumMean=5.40 QParSuspSum=0.00
2016-05-27 11:34:06: QParRFSum=1533.00 QParRFSumMean=5.90 QParSuspSum=89.00
2016-05-27 11:34:06: QParRFSum=1533.00 QParRFSumMean=5.90 QParSuspSum=89.00
如何以最好的方式做到这一点,并考虑到绩效?
我的想法是逐行使用file()函数和foreach循环。然后以某种方式将其处理成我想要的数组结构。像这样:
Array (
[0] =>
(
[date] => 2016-05-27
[time] => 11:04:16
[QParRFSum] => 1574.00
[QParRFSumMean] => 6.05
[QParSuspSum] => 83.00
)
[1] =>
(
[date] => 2016-05-27
[time] => 11:14:07
[QParRFSum] => 1537.00
[QParRFSumMean] => 5.91
[QParSuspSum] => 96.00
)
[2] =>
(
[date] => 2016-05-27
[time] => 11:14:07
[QParRFSum] => 1537.00
[QParRFSumMean] => 5.91
[QParSuspSum] => 96.00
)
)
And so on...
这是顺便说一句,还是有更好的方法可以让我获得更好的表现?
答案 0 :(得分:1)
我是从记忆中写下来但是使用了类似的东西
- (void)buttonPressed:(id)sender
{
UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self presentViewController:viewController animated:YES completion:nil];
}
答案 1 :(得分:0)
就个人而言,如果您正在处理巨大的文件,我会使用generators
和file streams
的组合。因此,您拥有自己的流,并使用生成器将其转换为数组 on demand ,这样您就不会耗尽内存。也许是这样的
function readFromFile($fileName) {
$handle = @fopen("/tmp/inputfile.txt", "r");
while (($line = fgets($handle, 4096)) !== false) {
//Process Line
yield $line;
}
fclose($handle);
}