首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LOAD DATA INFILE将两个CSV文件加载到同一行

使用LOAD DATA INFILE将两个CSV文件加载到同一行
EN

Stack Overflow用户
提问于 2011-01-17 14:43:43
回答 2查看 1.1K关注 0票数 0

我有两个CSV文件,每个文件都包含要合并到一个数据库中的不同列。我设置了一个包含两个文件中所有列的数据库,但是当我使用load data infile导入这两个文件而不是合并(IE数据文件1填充1-6列,数据文件2填充7-10列)时,我得到的数据库的行数是原来的两倍(每个CSV中的每个记录占一行),NULLS填充源CSV中未表示的数据。

我知道我可以通过以某种方式合并CSV,在启用覆盖的情况下导入,或者合并数据库中的数据来解决这个问题-对我来说,最有效的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-17 14:52:01

要做到这一点,最好的方法是使用脚本。CSV导入脚本通常是用脚本语言编写的,比如python、ruby或php。

您只需要第二个CSV的导入器对第一个CSV中创建的记录执行更新,因此脚本实际上只有5-10行。如果您提供每个CSV的示例记录,我很乐意为您编写一个。

python编辑:这是一个用于组合文件的python脚本,在file1和file2的代码行之间添加了一个分号。这实际上完成了Linux的paste命令所能做的事情。

代码语言:javascript
复制
lines1 = open('file1.txt').readlines()
lines2 = open('file2.txt').readlines()
outfile = open('outfile.txt', 'w')

if len(lines1) != len(lines2):
    raise Exception("Files need to be the same length, but file1 is %s lines long and file2 is %s lines long" % (len(lines1), len(lines2)));

for i in range(len(lines1)):
    combined = lines1[i].strip() + ";" + lines2[i].strip() + "\n"
    outfile.write(combined)

您可以通过将其另存为combine.py并键入python combine.py来运行它。放置它的文件夹应该包含file1.txtfile2.txtoutfile.txt

票数 1
EN

Stack Overflow用户

发布于 2011-01-17 15:05:49

我会看看Perl和Text::CSV模块。您需要考虑的一个问题是,这两个文件中的数据顺序是否相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4710625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档