Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I typically use python with the <a href="http://code.google.com/p/pyodbc/" rel="nofollow">pyodbc</a> module to perform batches like this against a SQL server. Take a look and see if it is an option, if so I can provide you an example. </p> <p>You will need to modify a lot of this code to fit your particular situation, however you should be able to follow the logic. You can comment out the cnxn.commit() line to rollback the transactions until you get everything working.</p> <pre><code>import pyodbc #This is an MS SQL2008 connection string conn='DRIVER={SQL Server};SERVER=SERVERNAME;DATABASE=DBNAME;UID=USERNAME;PWD=PWD' cnxn=pyodbc.connect(conn) cursor=cnxn.cursor() rowCount=cursor.execute('SELECT Count(*) from RemoteTable').fetchone()[0] cnxn.close() count=0 lastID=0 while count&lt;rowCount: #You may want to close the previous connection and start a new one in this loop. Otherwise #the connection will be open the entire time defeating the purpose of performing the transactions in batches. cnxn=pyodbc.connect(conn) cursor=cnxn.cursor() rows=cursor.execute('SELECT TOP 1000 ID, Field1, Field2 FROM INC WHERE ((ID &gt; %s)) ' % (lastID)).fetchall() for row in rows: cursor.execute('INSERT INTO LOCALTABLE (FIELD1, FIELD2) VALUES (%s, %s)' % (row.Field1, row.Field2)) cnxn.commit() cnxn.close() #The [0] assumes the id is the first field in the select statement. lastID=rows[len(rows)-1][0] count+=len(rows) #Pause after each insert to see if the user wants to continue. raw_input("%s down, %s to go! Press enter to continue." % (count, rowCount-count)) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload