Try something like this:
Using conn As NpgsqlConnection = connNpgsql.OpenConnection()
Using cmd As New NpgsqlCommand("", conn)
Dim sb As New StringBuilder("insert into tblpibconr(car, reskd, contno, contukur,conttipe) values ");
For i As Integer = 0 To dt3.Rows.Count - 1
If i <> 0 Then sb.Append(",")
sb.AppendFormat("(@car{0}, @reskd{0}, @contno{0}, @contukur{0}, @conttipe{0})", i)
Dim row As DataRow = dt3.Rows(i)
cmd.Parameters.Add("@car" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("car")
cmd.Parameters.Add("@reskd" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("reskd")
cmd.Parameters.Add("@contno" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("contno")
cmd.Parameters.Add("@contukur" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("contukur")
cmd.Parameters.Add("@conttipe" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("conttipe")
Next
cmdSql.CommandText = sb.ToString()
cmdSql.ExecuteNonQuery()
End Using
End Using
To limit the number of rows per batch when you get the "too many parameters" error:
Const RowsPerBatch As Integer = 1000
Using conn As NpgsqlConnection = connNpgsql.OpenConnection()
For batchStart As Integer = 0 to dt3.Rows.Count - 1 Step RowsPerBatch
Using cmd As New NpgsqlCommand("", conn)
Dim sb As New StringBuilder("insert into tblpibconr(car, reskd, contno, contukur,conttipe) values ");
For i As Integer = 0 To Math.Min(dt3.Rows.Count - batchStart - 1, RowsPerBatch - 1)
If i <> 0 Then sb.Append(",")
sb.AppendFormat("(@car{0}, @reskd{0}, @contno{0}, @contukur{0}, @conttipe{0})", i)
Dim row As DataRow = dt3.Rows(batchStart + i)
cmd.Parameters.Add("@car" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("car")
cmd.Parameters.Add("@reskd" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("reskd")
cmd.Parameters.Add("@contno" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("contno")
cmd.Parameters.Add("@contukur" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("contukur")
cmd.Parameters.Add("@conttipe" & i, NpgsqlTypes.NpgsqlDbType.Text).Value = row("conttipe")
Next
cmdSql.CommandText = sb.ToString()
cmdSql.ExecuteNonQuery()
End Using
Next
End Using