我想使用sqlloader加载CSV文件,而不必每次都编辑CSV文件。当文件发送给我时,第一列中的数据只包含在其余数据上方的标题中。第一个代码片段是我收到的虚假数据的示例,第二个代码片段是我想将其更改为的内容。
SQL表中的每一行都需要包含第一行的编号。
1,Intern,
,1/8/2023,Bob
,5/3/2022,Alice
,7/25/2022,Charles
2,Assistant,
,1/8/2023,Heather
,5/3/2022,Harold
,7/25/2022,Dave
3,Manager,
,1/1/2023,Tim
,1/8/2023,Lyon
,5/3/2022,Greg
,7/25/2022,Tyler
5,Head Manager,
,1/8/2023,Charles
,5/3/2022,Zack
我需要它的外观:
1,Intern,
1,1/8/2023,Bob
1,5/3/2022,Alice
1,7/25/2022,Charles
2,Assistant,
2,1/8/2023,Heather
2,5/3/2022,Harold
2,7/25/2022,Dave
3,Manager,
3,1/1/2023,Tim
3,1/8/2023,Lyon
3,5/3/2022,Greg
3,7/25/2022,Tyler
5,Head Manager,
5,1/8/2023,Charles
5,5/3/2022,Zack
我认为可能有一些方法可以在调用sqlldr命令(如sed或awk)的shell脚本中编辑它们。
1条答案
按热度按时间qyyhg6bp1#
对于问题中所示的输入文件(
input.csv
),命令印刷品
说明:
-F,
将输入字段分隔符设置为,
,
if($1!="") x=$1
保存第1列的非空值else $1=x
用保存的值替换空值1
始终为真条件,默认操作为print
({print}
的快捷方式)