I’ve recently been dealing with a really large .ics file (10.5 MB of data, 17,364 events spanning 10 years) and it seems to be able to choke just about anything that tries to work with it.
It takes forever for Apple Calendar (nee iCal) to import or export it and even longer for it to upload or download the events from the calendar server should you need to recreate the account, or set it up on a new computer.
On a reasonably specced Mac mini (i7 CPU, enough RAM, 100/40 Mbs internet connection) it takes over 90 minutes for the calendar events to appear in Calendar app after configuring an Exchange account on Office 365. The strange thing is that it looks like nothing is happening for an hour and a half and then suddenly all the events appear.
What I needed was a way to split this up in an intelligent fashion (rather than, say, just breaking it into 1MB chunks of text with the correct .ics header)
With some web searching, I found ICSSplitter – a simple python script that will take the large .ics file and split out all the events for a given year; e.g.
python ics_splitter.py all_events.ics 2016 years/2016_events.ics
I’ve now got 10 .ics files that are between 108 kB and 2.2 MB and everything is far more manageable, although for the biggest year I’m still dealing with over 3,300 events. Better than dealing with over 17,000 though.