I have a very large csv file from a spreadsheet. The first 2 columns are a
description, and the next 52 columns are a value for a week of the year
(using only 3 weeks in this example)
Is there a way in Awk to transform these into a format that is loadable into
a relational database such as Oracle?
For example, I'd like to change the following into the latter format. The
first column would be a derived week number. That first column is something
I could live without if I had to.
Any help with a simple awk would be appreciated.
washer,sunday,33,44,55
dryer,monday,667,333,44
refrig,monday,555,876,99
1 washer sunday 33
2 washer sunday 44
3 washer sunday 55
1 dryer monday 667
2 dryer monday 333
3 dryer monday 444
1 refrig monday 555
2 refrig monday 876
3 refrig monday 99
|
|
0
|
|
|
|
Reply
|
Buck
|
11/17/2004 4:39:07 PM |
|
In article <bebs62-3ff.ln1@turf.turgidson.com>,
Buck Turgidson <jc_va@hotmail.com> wrote:
....
Convert:
>washer,sunday,33,44,55
>dryer,monday,667,333,44
>refrig,monday,555,876,99
To:
>1 washer sunday 33
>2 washer sunday 44
>3 washer sunday 55
>1 dryer monday 667
>2 dryer monday 333
>3 dryer monday 444
>1 refrig monday 555
>2 refrig monday 876
>3 refrig monday 99
BEGIN {FS=","}
{
for (i=3; i<=NF; i++)
print i-2,$1,$2,$i
}
|
|
0
|
|
|
|
Reply
|
gazelle
|
11/17/2004 5:24:54 PM
|
|
Buck Turgidson wrote:
> I have a very large csv file from a spreadsheet. The first 2 columns are a
> description, and the next 52 columns are a value for a week of the year
> (using only 3 weeks in this example)
>
> Is there a way in Awk to transform these into a format that is loadable into
> a relational database such as Oracle?
Sure:
gawk -F, '{for (i=3;i<=NF;i++) print i-2, $1, $2, $i}'
Ed.
|
|
0
|
|
|
|
Reply
|
Ed
|
11/17/2004 5:25:43 PM
|
|
>
> BEGIN {FS=","}
> {
> for (i=3; i<=NF; i++)
> print i-2,$1,$2,$i
> }
>
Just beautiful.....Thanks to both.
|
|
0
|
|
|
|
Reply
|
Buck
|
11/17/2004 6:57:42 PM
|
|
|
3 Replies
262 Views
(page loaded in 0.127 seconds)
|