You should use XSLT or XQuery to transform the XML to CSV first. This is even more true if you just need a subset of the data contained in the XML.
Or in Python, using a streamed parsing…
For a huge file like that, the best choice would be to use the streaming capability of XSLT3: I highly recommand Saxon (
http://www.saxonica.com/download/download_page.xml) for speed and efficiency (paid version, or use a test licence).
But if you want to stick with free software, you can use XQuery and load your file in a XML database (eXistDB
http://www.exist-db.org/ or BaseX
http://basex.org/).
Both XSLT en XQuery have a "text" output mode.
If you don't know XSLT already, try XQuery, it's easier to use.