V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sjmcefc2
V2EX  ›  Python

请教如何扫描 create table 语句生成 insert 语句呢?

  •  
  •   sjmcefc2 · 2019-03-23 22:55:36 +08:00 · 2006 次点击
    这是一个创建于 2076 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想着通过扫描 create table 语句,生成 insert 语句,有例子不? go 或者 python 有现成的包不?

    14 条回复    2019-03-25 07:50:11 +08:00
    sunnyadamm
        1
    sunnyadamm  
       2019-03-23 23:15:29 +08:00
    没看懂你想说啥
    sjmcefc2
        2
    sjmcefc2  
    OP
       2019-03-23 23:22:46 +08:00
    @sunnyadamm 好吧,就是想着做一个通用的东西,比如读取 create table 的 sql 语句,然后可以生成 insert(v1,v2,v3)(^^^^^^)之类的批量插入语句。把 sql 中所有的 table 字段都能分别拿出来组 insert。
    好像还是没说清楚。。。。。
    sunnyadamm
        3
    sunnyadamm  
       2019-03-23 23:26:56 +08:00
    @sjmcefc2 真的还是没看懂,,,
    msg7086
        4
    msg7086  
       2019-03-23 23:28:05 +08:00
    @sunnyadamm 通过分析表结构,对某些数据生成 INSERT 语句吧,类似现在 ORM 在做的工作。
    goophy
        5
    goophy  
       2019-03-23 23:29:14 +08:00 via iPhone
    确定不用 dump ?
    sunnyadamm
        6
    sunnyadamm  
       2019-03-23 23:37:30 +08:00
    @msg7086 意思是假设十条数据插入表 a,但是不知道表结构,然后去读取表 a 结构,然后生成 insert 语句后,再插入表 a ?这样?
    sjmcefc2
        7
    sjmcefc2  
    OP
       2019-03-23 23:45:08 +08:00
    @msg7086 是的。是这样想

    @sunnyadamm 嗯,你这个思路会更加智能。我还是停留在知道建表语句,知道插入数据 ,拼接 insert 上。

    @goophy dump 表出来?
    liprais
        8
    liprais  
       2019-03-24 00:16:49 +08:00 via iPhone
    information_schema 里面有表定义,提问之前先看看文档
    freedomSky
        9
    freedomSky  
       2019-03-24 00:27:29 +08:00 via iPhone
    insert 的数据按什么来生成,随机生成不是全没意义的数据吗
    sjmcefc2
        10
    sjmcefc2  
    OP
       2019-03-24 00:30:53 +08:00
    @liprais 是的,谢谢提醒,我是不会自动读取啊,比如我怎么\d table 到拼出 insert 呢?

    @freedomSky 实际上是有导入数据的哈。主要是不知道怎么分析 sql 中的 create table
    gaopu
        11
    gaopu  
       2019-03-24 08:01:19 +08:00
    随便用什么语言按得到的表结构字符串拼接一下不就 OK 了。
    snappyone
        12
    snappyone  
       2019-03-24 08:55:28 +08:00
    sql 解析有很多工具包的,查一下就知道了,我之前用的是 druid
    txy3000
        13
    txy3000  
       2019-03-24 22:51:19 +08:00
    没看懂你的意思 你是想写一个 ORM 还是写一个 SQL 的 parser
    实现前者元编程 metaclass 重写__new__ 参考 Django 框架或者 SQLAlchemy
    后者 visitor 模式 构建你需要的 token 也可以直接用语法树生成工具 可以自己 GOOGLE 下
    sjmcefc2
        14
    sjmcefc2  
    OP
       2019-03-25 07:50:11 +08:00
    @txy3000 其实就是想做一个批量导入的工具而已。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:40 · PVG 06:40 · LAX 14:40 · JFK 17:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.