Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以使用load DATA INFILE将BLOB加载到MySQL中?_Python_Mysql_Numpy_Blob_Load Data Infile - Fatal编程技术网

Python 是否可以使用load DATA INFILE将BLOB加载到MySQL中?

Python 是否可以使用load DATA INFILE将BLOB加载到MySQL中?,python,mysql,numpy,blob,load-data-infile,Python,Mysql,Numpy,Blob,Load Data Infile,我曾尝试使用一些长字符串终止字段/行,但每次都有一些条目损坏。 BLOB是保存为uint32(numpy.array(intlist,dtype='uint32').tostring())的整数的numpy.array。 卸载时(numpy.fromstring(blob,dtype='uint32')),numpy报告字符串大小必须是元素大小的倍数 mysql -p somedb -e "LOAD DATA LOCAL INFILE '/tmp/tmpBZRvWK' INTO TABLE `h

我曾尝试使用一些长字符串终止字段/行,但每次都有一些条目损坏。
BLOB是保存为
uint32
numpy.array(intlist,dtype='uint32').tostring()
)的整数的
numpy.array

卸载时(
numpy.fromstring(blob,dtype='uint32')
),numpy报告
字符串大小必须是元素大小的倍数

mysql -p somedb -e "LOAD DATA LOCAL INFILE '/tmp/tmpBZRvWK' INTO TABLE `hash2protids` FIELDS TERMINATED BY '....|....' LINES TERMINATED BY '....|....\n'"
编辑
我尝试了
插入hash2protids(hash,protids)值('key',LOAD_FILE('/tmp/tmpfile')(),但LOAD_文件仅适用于服务器上的文件。另外,我还有3百万行要插入,所以速度太慢了

EDIT2
现在我依靠的是
MySQLdb
executemany,因为它是:

  • 比插入单行快得多
  • 可以加载任何数据类型
代码如下所示:

step = 1000
data = []
cmd = "INSERT INTO sometable (hash, protids) VALUES (%s, %s)"
for (hash, protids) in GENERATOR:
    pblob = numpy.array(protids, dtype='uint32').tostring()
    data.append((hash, pblob))
    if len(data)>step:
        cur.executemany(cmd, data)
        data = []
if data:
    cur.executemany(cmd, data)
注意,我每1000个元素就拆分cur.executemany一次,因为在一次执行所有条目时,由于“max_allowed_packet”限制,我遇到了MySQL错误