[英]Populate MySQL table with db file
我有一个xx.db文件,可以通过键访问该文件,并将键打印到屏幕上进行检查。 有很多级别的键,我在这里显示顶级。
for filename in filenames:
with contextlib.closing(shelve.open(filename, flag = "w")) as data:
prdata = data['all'].keys()
我在Python中创建了一个这样的表:
tbl= """CREATE TABLE IF NOT EXISTS table2 (
`class` varchar(30) default NULL,
`name` varchar(120) default NULL,
)"""
cursor.execute(tbl)
我想将第一个数据集合(来自.db文件)的输出加载到创建的MySQLdb表中。 我应该如何进行? 我首先需要从数据库文件创建文本文件吗? 我已经读到LOAD DATA INFILE是一种从文本文件将数据加载到数据库中的快速方法。 由于数据库中有很多数据,因此如果我可以先跳过制作文本文件的速度会更快。
编辑:尝试过此操作,提供语法错误“您的SQL语法有误;请查看与您的MySQL服务器版本相对应的手册,以获取在'prdata INTO TABLE table2 \\ n \\ t FIELDS TERMINATED BY'附近使用的正确语法。 '。我不正确地理解语法文档以及如何将其用Python封装。
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
对于文件名中的文件名:使用contextlib.closing(shelve.open(filename,flag =“ w”))作为数据:
prdata = data ['all']。keys()cursor.execute(“”“”将数据输入prdata装入表table2,字段以''“”“终止)
更新:决定与INSERT INTO table2(class,name)VALUE(%s,%s)一起使用
创建连接后,请不要忘记添加local_infile参数
connection = MySQLdb.connect(host="localhost", user="appuser", passwd="",
db="test", local_infile = 1)
否则将出现此错误:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
您也可以从python进行加载:
cursor.executemany(
"""INSERT INTO table2 (class, name)
VALUES (%s, %s)""",
[
("class1", "name1" ),
("class2", "name2" ),
("class3", "name3" )
] )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.