快速添加行/行号到文本文件的方法

时间:2009-08-13 19:56:02

标签: sql-server bulkinsert file-manipulation

我有一个大约有12万行的文件,每行看起来像这样:

  

0701648016480002020000002030300000200907242058CRLF

我想要完成的是在数据之前添加行号,数字应该有固定的长度。

这背后的想法是能够将此文件批量插入到SQLServer表中,然后使用它执行某些操作,这些操作要求每行具有唯一标识符。我已经尝试过在数据库方面这样做,但是我没能达到良好的性能(至少在4'以下,在1以下是理想的)。

现在我正在尝试使用类似这样的python解决方案。

file=open('file.cas', 'r')
lines=file.readlines()
file.close()
text = ['%d %s' % (i, line) for i, line in enumerate(lines)]
output = open("output.cas","w")
output.writelines(str("".join(text)))
output.close()

我不知道这是否会起作用,但它会帮助我在继续尝试新事物之前了解它的表现和副作用,我也认为在C中这样做我有一个更好的记忆控制。

用低级语言帮助它吗?有没有人知道更好的方法来做到这一点,我很确定它已经完成,但我找不到任何东西。

感谢

3 个答案:

答案 0 :(得分:4)

哦,上帝不,不要一次读完所有1200万行!如果你打算使用Python,至少要这样做:

file = open('file.cas', 'r')
try:
    output = open('output.cas', 'w')
    try:
        output.writelines('%d %s' % tpl for tpl in enumerate(file))
    finally:
        output.close()
finally:
    file.close()

使用生成器表达式,该表达式一次处理一行文件。

答案 1 :(得分:2)

你为什么不试试猫-n?

答案 2 :(得分:2)

斯特凡诺是对的:

$ time cat -n file.cas> output.cas

使用时间只是为了看看速度有多快。它会比python更快,因为cat是纯C代码。