从 CSV 文件构建平面表格
我有 500 个以下格式的 CSV 文件:
IndicatorA_Name.csv
1900 1901 1902 ... Norway 3 2 Sweden 1 3 3 Denmark 5 2 3 ...
IndicatorB_Name.csv
1900 1901 1902 ... Norway 1 3 4 Sweden 1 2 Iceland 1 6 3 ...
- 列中为年份,行中为国家/地区。
- 请注意,文件之间的国家/地区、年份和值可能有所不同。
我想遍历所有这些文件并制作一个具有以下结构的平面表(CSV 文件):
country, year, IndicatorA_Name, IndicatorB_Name, ... Sweden, 1900, 1, 1 Sweden, 1901, 3, 2 Norway, 1900, 3, 1 ...
最好使用 PHP 或 JavaScript,但我愿意学习新的东西。
I have 500 CSV files in this format:
IndicatorA_Name.csv
1900 1901 1902 ... Norway 3 2 Sweden 1 3 3 Denmark 5 2 3 ...
IndicatorB_Name.csv
1900 1901 1902 ... Norway 1 3 4 Sweden 1 2 Iceland 1 6 3 ...
- Years in columns, countries in rows.
- Notice that countries, years and values may differ between files.
I'd like to run through all these files and make a flat table (CSV file) with this structure:
country, year, IndicatorA_Name, IndicatorB_Name, ... Sweden, 1900, 1, 1 Sweden, 1901, 3, 2 Norway, 1900, 3, 1 ...
Preferably in PHP or JavaScript but I'm willing to learn something new.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可能应该编写类似以下代码的代码:
You should probably code something like following code:
我建议使用
fgetcsv
(请参阅链接用法示例)或str_getcsv
(按照捷克学的建议,使用"\t"
作为分隔符)。这样,您就可以自动支持边缘情况,例如嵌入的分隔符(例如,逗号分隔文件中字段中的逗号)。通常最好不要重新发明轮子。
I'd suggest using
fgetcsv
(see link for a usage example) orstr_getcsv
(with"\t"
as the delimiter as Czechnology suggests).That way you automatically support edge-cases like embedded delimiters (eg a comma in a field in a comma-separated file). It's generally best not to re-invent the wheel.
使用
(如果它是制表符分隔的,就像您的示例中所示)并通过两个循环运行它。
编辑
这是经过测试的代码:
$sql 现在是
Use
(if it's tab separated like it looks in your example) and run throu it with two loops.
EDIT
Here's a tested code:
$sql is now