【发布时间】:2011-07-01 02:03:30
【问题描述】:
我有一组文件要导入 MySQL。
每个 CSV 文件如下所示:
Header1;Header2;Header3;Header4;Header5
Data1;Data2;Data3;Data4;Data5;
Data1;Data2;Data3;Data4;Data5;
Data1;Data2;Data3;Data4;Data5;
Data1;Data2;Data3;Data4;Data5;
数据可能包含空格、句点或完整的冒号。它们绝对不会包含分号,因此这是一个有效的分隔符。它们也不会包含 \n 或任何其他换行符。
示例数据
2010.08.30 18:34:59
0.7508
String of characters with spaces in them
每个文件都有一个唯一的名称。这些名称都符合以下模式:
Token1_Token2_Token3.csv
我有兴趣将大量这些 CSV 文件(大约数百个)组合成一个 CSV 文件。文件范围从 10KB 到 400MB。最终,我想将它发送到 MySQL。不要担心摆脱单独的标题行;我可以在 MySQL 中轻松做到这一点。
我希望最终的 CSV 文件如下所示:
Header1,Header2,Header3,Header4,Header5,FileName
Data1,Data2,Data3,Data4,Data5,Token1
Data1,Data2,Data3,Data4,Data5,Token1
Data1,Data2,Data3,Data4,Data5,Token1
Data1,Data2,Data3,Data4,Data5,Token1
Data1,Data2,Data3,Data4,Data5,Token1
我不关心任何其他令牌。如果解决方案只是将每个 csv 文件名转储到 Token1 字段中,我也可以生存,因为我可以在 MySQL 中轻松解析它。
请帮帮我!我花了 10 多个小时来解决一个相对简单的问题。
可用技术:
awk
窗口批处理
linux bash
外壳
perl
蟒蛇
php
mysql导入
这是一个服务器盒子,所以我无法编译任何东西,但如果你给我一个 Java 解决方案,我一定会尝试在盒子上运行它。
【问题讨论】:
-
您是否尝试过查看 Python
csv模块文档 (docs.python.org/library/csv) 以读取数据文件(并编写组合文件),使用str.partition方法获取第一部分文件名?
标签: php python perl powershell awk