0
A
回答
2
在日益复杂的顺序(并且还增加了处理大文件的能力顺序):
- 了解整个事情成2 d阵列(或锯齿状排列又名阵列OF-阵列)。
- 内存要求:等于文件 的大小
- 轨道的文件中的每一行内的偏移。首先找到每个(非引用)换行符,将当前位置存储到
List<Int64>
。然后遍历所有行,对于每一行:寻找保存的位置,将一个单元格复制到输出,保存新的位置。重复,直到你用尽列(所有行到达换行符)。- 内存要求:每行八个字节
- 频繁的文件散落在比磁盘颠簸和悲惨的性能磁盘缓存结果更大的文件查找,但它不会崩溃。
- 上面一样,但在例如的工作块8k行。这将创建一组包含8k列的文件。输入块和输出都适合磁盘缓存,因此不会发生抖动。在创建条纹文件之后,迭代条纹,从每个条纹文件读取一行并追加到输出。重复所有行。这会导致对每个文件进行顺序扫描,这也具有非常合理的缓存行为。
- 需要的内存:第一遍为64k,第二遍为(列数/ 8k)文件描述符。
- 对于每个维度高达几百万的表格而言性能良好。对于更大的数据集,只需将几条(例如1k)的条带文件组合在一起,制作一组较小的条带,重复,直到只有一个文件中的所有数据都有一个条带。
最后的评论:您可能会通过使用C++(或适当指针支持任何语言),内存映射文件挤出更多的性能,以及指针而不是文件偏移。
0
这真的取决于。你从数据库中获得这些吗?您可以使用MySql导入语句。 http://dev.mysql.com/doc/refman/5.1/en/load-data.html
或者你可以使用可以通过数据循环使用streamwriter对象将它添加到文件流中。
StreamWriter sw = new StreamWriter('pathtofile');
foreach(String[] value in lstValueList){
String something = value[1] + "," + value[2];
sw.WriteLine(something);
}
+0
问题是文件很大:26000X10000当转置时,我甚至可以在Excel中处理该文件。 明显SQL和MySql无法导入那么多 – gilibi 2011-05-05 16:44:30
0
我在这里的Python写了一个小的证明了概念脚本。我承认这是错误的,有可能会有一些性能改进,但它会做到这一点。我用40x40的文件运行它并得到了预期的结果。我开始运行它,更像是你的示例数据集,我花了太长时间等待。
path = mkdtemp()
try :
with open('/home/user/big-csv', 'rb') as instream:
reader = csv.reader(instream)
for i, row in enumerate(reader):
for j, field in enumerate(row):
with open(join(path, 'new row {0:0>2}'.format(j)), 'ab') as new_row_stream:
contents = [ '{0},'.format(field) ]
new_row_stream.writelines(contents)
print 'read row {0:0>2}'.format(i)
with open('/home/user/transpose-csv', 'wb') as outstream:
files = glob(join(path, '*'))
files.sort()
for filename in files:
with open(filename, 'rb') as row_file:
contents = row_file.readlines()
outstream.writelines(contents + [ '\n' ])
finally:
print "done"
rmtree(path)
相关问题
- 1. C#导出/写多维数组到文件(csv或其他)
- 2. 阻止其他c#程序重置文件的权限
- 3. 使用matlab或其他程序过滤文本文件
- 4. 使用spark中的其他csv文件更新csv文件
- 5. 如何从C程序中读取.txt文件或.csv文件?
- 6. Java库或应用程序将CSV转换为XML文件?
- 7. 如何干扰其他Windows程序(使用C#,C++或Java)
- 8. 以Java存储数据。文本文件,csv或其他方法?
- 9. 从其他应用程序更改dll文件中的设置
- 10. 阅读其他应用程序配置文件的麻烦
- 11. 动态创建来自其他CSV文件的CSV文件R
- 12. 桌面应用程序使用C++和.NET或其他
- 13. 基于其他csv文件计数
- 14. 如何将junit结果导入csv或其他文件?
- 15. c#文件移动(文件已被其他进程使用)
- 16. 应用程序由用户或其他应用程序启动?
- 17. 使用C#程序的选择输出到其他C#程序
- 18. 将ListView转换为XML文件(使用DOM或其他?)
- 19. 打开其他程序的配置文件
- 20. 配置文件已被其他程序更改
- 21. Word Automation - 文件正在被其他应用程序或用户使用
- 22. 如何在C#应用程序中使用其他软件DLL?
- 23. C++ cgi应用程序调用其他程序失败
- 24. 将配置文件设置转移到其他电脑
- 25. 使用其他文件的设置
- 26. 如何识别文件是一个文本文件或其他使用c#.net
- 27. 在windows phone7上启动其他程序或应用程序
- 28. PHP is_writeable或被其他程序打开?
- 29. 通过其他应用程序发送序列化文件
- 30. 将CHM文件转换为CSV或SQL
调换他们如何和什么?为什么你只接受25%的答案给你? – 2011-05-05 16:34:19
你能澄清你的意思是“转置”吗? – 2011-05-05 16:34:39
你的意思是像一个矩阵转置,把第一行变成第一列,第二行变成第二列,等等? – 2011-05-05 16:44:58