繁体   English   中英

用db文件填充MySQL表

[英]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" )
      ] )

docs http://mysql-python.sourceforge.net/MySQLdb.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM