this post was submitted on 06 Sep 2024
14 points (81.8% liked)

Programming

17398 readers
103 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

Omg it's sooo daammmn slooow it takes around 30 seconds to bulk - insert 15000 rows

Disabling indices doesn't help. Database log is at SIMPLE. My table is 50 columns wide, and from what i understand the main reason is the stupid limit of 2100 parameters in query in ODBC driver. I am using the . NET SqlBulkCopy. I only open the connection + transaction once per ~15000 inserts

I have 50 millions rows to insert, it takes literally days, please send help, i can fucking write with a pen and paper faster than damned Microsoft driver inserts rows

you are viewing a single comment's thread
view the rest of the comments
[–] deegeese@sopuli.xyz 2 points 2 months ago (2 children)

Inserting 15k rows of 50 columns into a 50M table is something we do every day.

2100 params on a query sounds like spaghetti code.

I suspect OP is using single row insert statements when they need a bulk insert to be performant.

[–] kSPvhmTOlwvMd7Y7E@programming.dev -1 points 2 months ago

I am using SqlBulkInsert, given how bad MS is with naming things, that might as well be row inserts instead of bulks

[–] kSPvhmTOlwvMd7Y7E@programming.dev -4 points 2 months ago

2100 parameters is a documented ODBC limitation( which applies on all statements in a batch)

This means that a

"insert into (c1, c2) values (?,?), (?,?)..." can only have 2100 bound parameters, and has nothing to do with code, and even less that surrounding code is "spaghetti"

The tables ARE normalised, the fact that there are 50 colums is because underlying market - data calibration functions expects dozens of parameters, and returns back dozens of other results, such as volatility, implied durations, forward duration and more

The amount of immaturity, inexperience, and ignorance coming from 2 people here is astounding

Blocked