On May 20, 5:55 pm, cjl <[EMAIL PROTECTED]> wrote:
...snip...
> conn = MySQLdb.connect(db="database", host="localhost", user="root",
> passwd="password")
> c = conn.cursor()
>
> reader = csv.reader(open(sys.argv[1]))
> for row in reader:
>     data1, data2, data3, data4 = row
>     data = (data1,data2,data3,data4)
>     c.execute("""insert into datatable values (%s, %s, %s, %s)""",
> data)
>     conn.commit()
>
> This takes a really long time to execute, on the order of minutes.
> Directly importing the csv file into mysql using 'load infile' takes
> seconds.
>
> What am I doing wrong? What can I do to speed up the operation?

In addition to the previous poster's suggestions,
if you have indexes, foreign keys, or other constraints
on the table, and you are sure that you are loading
"good" data, you may want to drop them before doing
the inserts, and recreate them after.  Updating indexes
and checking contraints can be time consuming.

But you will probabably never get your code to run
as fast as the mysql "load" command, which (I'm
guessing here, don't use mysql much) skips all
the sql machinery and writes directly to the table.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to