Well, SQL syntax isn't quite the realm of a Perl forum, but if I were you I'd first trim down the insert (to say, inserting a single row). You will probably still have the error, but there's less clutter to wade through.
If you are generating the SQL code instead of having the SQL literally in your program, I'd also turn on tracing in the DBI, to verify that you are actually sending what you think you are sending.