【发布时间】:2022-01-18 15:49:36
【问题描述】:
我有一个大约 25k 行的 csv。我必须一次从第 1 列和第 2 列中选择 1000 行,然后再选择下 1000 行,依此类推。
我正在使用下面的命令,它可以很好地从列#1 和列#2 中提取所有值,即从两列中提取 25K 字段,我想选择 1-1000 之类的值,将它们放入我的 sql导出查询然后 1001-2000,2001-3000 等等,然后将值放在我的导出查询中的 WHERE IN 中,并将结果附加到 dbData.csv 文件中。
我的代码如下:
awk -F ',' 'NR > 2 {print $1}' $INPUT > column1.txt
i=$(cat column1.txt | sed -n -e 'H;${x;s/\n/,/g;s/^,//;p;}')
awk -F ',' 'NR > 2 {print $2}' $INPUT > column2.txt
j=$(cat column2.txt | sed -n -e 'H;${x;s/\n/,/g;s/^,//;p;}')
echo "Please wait - connecting to database..."
db2 connect to $sourceDBStr user user123 using pas123
db2 "export to dbData.csv of del select partnumber,language_id as LanguageId from CATENTRY c , CATENTDESC cd where c.CATENTRY_ID=cd.CATENTRY_ID and c.PARTNUMBER in ($i) and cd.language_id in ($j)"
【问题讨论】:
-
欢迎来到 SO,感谢您分享您的努力。请务必提及当您获取前 1000 行等时您正在尝试做什么?您的目标是运行命令还是打印一些东西?请在您的问题中添加更多详细信息,以便我们尝试帮助您,干杯。
-
edit 您的问题要包括该信息和所有其他信息,请勿将其放在无法格式化且容易遗漏的 cmets 中。此外,您在使用 awk 时永远不需要 sed,因此请确保向我们展示您想要的最终输出格式,而不是您当前认为需要运行 sed 的格式。一定要显示一个minimal reproducible example,例如每 3 行而不是 1000 行。
-
awk '{print $1}' CatalogEntriesDescription.csv | split -l 1000? -
您添加了代码,但仍然没有示例输入和预期输出,因此到目前为止您已经提供了我们要求您提供的三分之一,因此我们可以为您提供帮助。正如我在my first comment above 中提到的,一定要展示一个minimal reproducible example,其中包含简洁、可测试的样本输入和预期输出,例如例如,一个 10 行长的文件,例如,每 3 行而不是 1000 行被拆分。
标签: awk