我需要一次又一次地从 SQLite 3 数据库到 MySQL 数据库进行某种增量导入。两个数据库中的列名称相同。有没有一种好方法可以通过脚本来做到这一点(因此有没有一种好方法可以将一行的列值作为某种数组/列表获取,这样我就可以真正使用它们?)或者我最好使用小C程序?
更新:好的,有 -line 选项,每行给出一个列值,然后结果行用空行分隔。仍然需要找到一种非常简单的方法来解析它;-)
答案1
#!/bin/bash
sqlite test.db "select * from tablename" > /tmp/dump.sql
mysql -uroot -ppassword databasename <<EOF
load data infile '/tmp/dump.sql'
into table tablename
fields terminated by '|'
escaped by '\\\'
lines terminated by '\n';
EOF
答案2
我已经使用适配器在 PHP 中编写了这样的东西,我们所做的一件事是创建一个 sys_parsed 标志来标记已导入(或失败)的内容。基本上保持跟踪,这样您就不会最终尝试永远无法工作的导入。
它解析数千个 sqlite 文件并将其导入到单个 mysql 数据库中,每个客户都有一个表。但它绝对不是15班轮。如果您想要可靠的进口产品,还有更多的事情要做。它的性能也相当好,负载不是很大。
如果您感兴趣,我可以看一下,看看是否可以分享(为客户编写)