我有一个包含超过3000列的巨大.CSV文件,需要将这些列加载到数据库中,因为表限制为1024列,我想将这些.CSV文件拆分为1024个或更少列的多个文件。
到目前为止,我在之前有关此主题的问题的帮助下尝试过 -
Python -
import csv
import file
input import os
source = 'H:\\Programs\\Exploratory Items\\Outdated\\2018\\csvs\\' for root, dirs, filenames in os.walk(source):
for f in filenames:
fullpath = os.path.join(source, f)
output_specifications = ( (fullpath[:-4] + 'pt1.csv', slice(1000)
(fullpath[:-4] + 'pt2.csv', slice(1000, 2000)),
(fullpath[:-4] + 'pt3.csv', slice(2000, 3000)),
(fullpath[:-4] + 'pt4.csv', slice(3000, 4000)),
(fullpath[:-4] + 'pt5.csv', slice(4000, 5000)), )
output_row_writers = [
(
csv.writer(open(file_name, 'wb'),
quoting=csv.QUOTE_MINIMAL).writerow, selector,
) for file_name, selector in output_specifications ]
reader = csv.reader(fileinput.input())
for row in reader:
for row_writer, selector in output_row_writers: row_writer(row[selector])
上面的python代码的问题是分割和写入这些文件需要永远,因为按行写入是我的理解。不适合我的情况,因为我有超过200个.CSV文件,每个文件有1000多行。
现在尝试 -
-cut命令(POSIX)但是我使用Windows所以会在Ubuntu平台上试试这个。
想在R中尝试:
我有一个代码可以将我的所有SPSS转换为有效工作的.csv,因此我想在此阶段为此添加更多内容,以便它可以将我的文件按列拆分为多个.csvs。
setwd("H:\\Programs\\2018")
getwd()
list.files()
files <- list.files(path = '.', pattern = '.sav')
library(foreign)
for (f in files) { #iterate over them
data <- read.spss(f, to.data.frame = TRUE, use.value.labels = FALSE )
write.csv (data, paste0(strsplit(f, split = '.', fixed = T)[[1]][1], '.csv'))
}
谢谢
参考资料 - Python code ref