Architecture Question
Given that the data model you receive is different, it makes best sense for you to use a NoSql store like mongodb.

Here is the tech stack I would use ( python ) :


To receive requests with csv file, I would use flask microweb framework.
I would run flask with gunicorn and gevent.
For every csv file received, I would parse the rows based on varied columns and store them in a mongodb. 
I would write queries on the collection in mongodb to extract information. 


I would be more than happy to elaborate more if required .