If the memory on your system is large enough to hold the whole
csv file, you could try this very dangerous way of putting the file into a temporary file system (i.e. a virtual hard drive in your RAM) and then start splitting it from there onto the hard drive.
Note that when the PC is powered down while the file is in this
tmpfs the data will be lost! This is very, very prone to making you unhappy.
/dev/shm should be present already, double check if
mount | grep shm lists a
tmpfs as mounted on
mv file /dev/shm
split -l 1000000 /dev/shm/file /path/to/split/directory/
I don't know how much excess memory you'll need apart from the file size, as I am not familiar with
split's memory usage, but it would be at least the one million lines you are splitting, I assume.
Again be prepared for data loss on a simple power outage or anything unexpected.
PS: Maybe you have a USB flash drive at hand to use as your temporary file system - less dangerous, but slower.