He managed to run to a room at the back of the store, where he locked the door and called police.
He then ran out the back of the shop, dripping blood.
At least one car, along with pedestrians and a neighbour, stopped to assist him while the alleged assailant remained in the store, before running out some minutes later, the owner said.
Emergency services arrived minutes after that and the dairy owner was taken to hospital where he stayed for five nights undergoing surgery on his skull.
Appearing relatively chipper yesterday, the owner said he never expected such an attack would occur in Mosgiel, which was a "very safe" area.
It had happened quickly and left him frightened, but he felt lucky he was not more badly injured.
Covid-19 was affecting most people, some were struggling, and he would forgive his assailant, he said.
Two months ago, a man wearing a mask and hat had burgled the store, taking about $20 worth of goods before running out, the owner said.
He had not had any update on the police investigation.
To the local community, his message was "Thank you".
The support he received was tremendous and many had sent cards and flowers.
Next-door neighbour Jesse Trafford said he was pleased a Givealittle page he set up after the attack had raised $3000, with two weeks still to go.
The dairy owner treated everyone with kindness and the outpouring of community support confirmed it, Trafford said.
A 31-year-old man has been charged with robbery causing grievous bodily harm and is to appear in the Dunedin District Court in April.