如何将多个csv文件合并到一个csv文件中

时间:2014-04-05 06:58:28

标签: java csv merge

我需要将多个CSV文件合并到一个csv文件中。 我尝试使用谷歌搜索并获得了有关CSVWriter或SuperCSV的一些信息,但我无法理解。

所有CSV文件都包含相同的列/标题。

为了更好地理解:

我从数据库中获取10,000条记录,我正在创建10个csv文件。 (MyCSV_1-1000.csvMyCSV_1001-2000.csvMyCSV_2001-3000等。) 每个csv文件包含1,000条记录。现在我需要将所有这些csv文件合并到第一个CSV中,以便MyCSV_1-1000.csv将包含所有记录,即1-10,000(而在合并之前,它只包含1-1,000个记录)。

有人可以帮我解决这个问题吗。

我想在Java或任何其他Java支持实用程序/框架中执行此操作。

2 个答案:

答案 0 :(得分:2)

将多个csv文件中的记录合并为一个很简单。如果多个csv文件位于同一目录中,则可以从cmd执行以下命令。

D:\Files>copy *.csv Merged.csv

这将在同一目录中创建一个Merged.csv文件,并将包含来自所有csv的记录。

答案 1 :(得分:0)

可以根据编程人员要实现的目标/问题来利用编程语言。

假设您需要在合并之前清理数据集,Python的库非常好,我建议您使用pandas

如果数据集具有相同的结构,请创建一个for循环来执行以下操作:

•删除不必要的行

df.drop(df.index[[0,1,2]]) #Removing the first 3 rows

•转置数据框

transpose_dataframe = df.transpose()

•还有更多。

清理过程完成后,对于合并,还可以使用Python。就我而言,Maverick的答案生成了一些有趣的角色,并且没有正确合并,因此我使用了以下内容:

import os
import csv, glob


Dir = r"C:\Users\name\Desktop\DataDirectory"
Avg_Dir = r"C:\Users\name\Desktop\Output"

csv_file_list = glob.glob(os.path.join(Dir, '*.csv'))

print (csv_file_list)

with open(os.path.join(Avg_Dir, 'Output.csv'), 'w', newline='') as f:

    wf = csv.writer(f, lineterminator='\n')
    
    for files in csv_file_list:
        with open(files, 'r') as r:
            next(r) # SKIP HEADERS
            rr = csv.reader(r)
            for row in rr:
                wf.writerow(row)