SSIS - slow script component in data flow?
===

I am loading a lot of files in different format/layout. The content of one file may be loaded into multiple database tables (There is a record type character at the fixed position of each row block to identify the record type). For each format, the flow is,

 1. Read X bytes from the flat ascii file into a char array. 
 2. Get the character at position N in the array. 
 3. Parse and write to different tables according to the value of the character at position N.


I created an SSIS package which use Script component as source. The script component has a lot of outputs for different tables. The issues is,

 1. Slow. It takes six hours to load two tables, which total size is
    less then 2GB (33M rows). (Why?)
 2. Difficult to manage/test the code in the Script component. 
 3. It has a lot of repetitive work to create the output columns, etc. 

Should I just create a C# program to convert the flat file into multiple CSV file? Or load the data using C# console program directly? What's the best approach? I think the layout meta information is easier to be used in a c# console program. On contrast, I had to manually define all the output column in SSIS script component. 