0

私はC#を使用しており、データをcsvファイルに書き込みます(さらに使用するため)。しかし、私のファイルは大規模になり、転置する必要があります。それを行う最も簡単な方法は何ですか。任意のプログラムで?

ギル

4

3 に答える 3

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)
于 2011-05-09T22:27:00.347 に答える
0

それは本当に依存します。これらをデータベースから取得していますか?MySql import ステートメントを使用できます。 http://dev.mysql.com/doc/refman/5.1/en/load-data.html

または、ストリームライター オブジェクトを使用して、データをループしてファイル ストリームに追加することもできます。

StreamWriter sw = new StreamWriter('pathtofile');
foreach(String[] value in lstValueList){
String something = value[1] + "," + value[2];
sw.WriteLine(something);
}
于 2011-05-05T16:42:40.100 に答える