I've also lost a couple of dwarves to pikes and long-nosed gar. Anyone have any suggestions about how I might defend my dorfs against these fiendish fish?
Easiest, if tedious: 'd'esignate, 'o', 'r' and mark all the terrain near the rivers (within, say, two or three tiles). Then your dwarves won't walk next to the river unless they really need to, which reduces the probability they'll corner a fish and make it angry and get sucked in, ne'er to be seen again. What you're doing is telling the dwarves to prefer walking 12.5 normal tiles rather than one of those bright red tiles (you're not telling them never ever to walk on those red tiles, note, just telling them to avoid them if possible).
Also, make sure you have enough booze, and you have a well or three, so they're not tempted to go drink from the river.
Also, 'i' to designate a zone (mnemonic: "zone" is one of the few words that has no 'i' in it), and, once you designated the zone, 'f' to designate it as fishing. Mark out some pond (more precisely, land immediately next to the pond) for fishing, and your fisherdwarves will go there instead of fishing small fish out of the river.
Catching the big fish is more work; see I3erent's thread on that ("EuReThRa" is the search term to find it).