For starters I'm not sure about the INSERT statement you're using, also where is the information being derived from? Another table? An application?
Your use of:
INSERT INTO [TABLE] (Col1, Col2, Col3, Col4) SELECT '1', '2', '3', '4' ;
seems incorrect to my knowledge as I'd always known it as:
INSERT INTO [TABLE] {Col1,Col2,Col3,Col4} VALUES {Val1,Val2,Val3,Val4}
at that point you can declare the valuables to match your input requirements (whatever they may be).
If the values are being derived from an application source of some sort a basic loop on the application end would suffice to input your values to the DB, if they're being derived from another table then I'm not seeing where in your example you're collecting those values to assign to the new table.
If the values are derived from a 2nd table then you would probably use something more like this:
INSERT INTO [TABLE] {Col1,Col2,Col3,Col4} VALUES {SELECT Val1,Val2,Val3,Val4 FROM [TABLE2] WHERE row=counter}
assuming you have some sort of numerically indexed column in the 2nd table.
I, personally, if transferring data from table2 (or even tables 2,3,4 & 5) to table1 would likely invest the 5 minutes to create a simple win-forms app to do it and build the world's simplest data loop lol but that's me.
On re-reading your post though, are you trying to input just the values "1" "2" "3" and "4" into the 4 columns repeatedly without an external data source? If So, then:
INSERT INTO [TABLE] {Col1,Col2,Col3,Col4} VALUES {'1','2','3','4'}
should suffice in place of the version you have with INSERT/SELECT in the same row. And, I believe, if the columns are set to any numeric data type you can do {1,2,3,4} instead of {'1','2','3','4'} as (but I could be mistaken) I believe the '' indicates character/string values.