我有一个 csv 文件,其中包含超过 5k 个带有标题名称的字段/列。我只想将一些特定字段导入到我的数据库中。
我正在使用本地 infile 来处理其他需要导入的较小文件
LOAD DATA
LOCAL INFILE 'C:/wamp/www/imports/new_export.csv'
INTO TABLE table1
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(colour,shape,size);
为要跳过的列分配虚拟变量可能很麻烦,而且我更愿意参考使用字段标题来进行未来证明,以防文件有其他字段
我正在考虑在将文件加载到数据库之前对文件使用 awk 。但我在搜索中找到的例子似乎不起作用。
任何有关最佳方法的建议将不胜感激。
这与 MvG 的答案类似,但不需要gawk
4 因此使用-F
正如该答案中所建议的。它还展示了一种列出所需字段并迭代列表的技术。如果列表很大,这可能会使代码更易于维护。
#!/usr/bin/awk -f
BEGIN {
col_list = "colour shape size" # continuing with as many as desired for output
num_cols = split(col_list, cols)
FS = OFS = ","
}
NR==1 {
for (i = 1; i <= NF; i++) {
p[$i] = i # remember column for name
}
# next # enable this line to suppress headers.
}
{
delim = ""
for (i = 1; i <= num_cols; i++) {
printf "%s%s", delim, $p[cols[i]]
delim = OFS
}
printf "\n"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)