【问题标题】:SQLite database to MySQL database daily migration / updating new fieldsSQLite 数据库到 MySQL 数据库的每日迁移/更新新字段
【发布时间】:2011-09-23 03:56:29
【问题描述】:

我有一个 SQLite 数据库,它是通过使用 Java 读取 PDF 文件中的一些数据而创建的。每天(或几乎)我都有新的 PDF 文件要阅读,这些文件会在我的 SQLite 数据库的某些表中创建新行。

最终,我想做的是使用我的网站访问的 MySQL 数据库,使该数据库中的数据在 Internet 上可用。问题是,我在谷歌上搜索过,无济于事,如何将我的数据库迁移到 MySQL。当然,我找到了一些程序可以这样做,但它们不允许我每天午夜以自动方式进行。

另外,如果可能的话,我宁愿用另一种方式:只更新添加的新行并只迁移那些,而不是每天重新创建整个数据库。

我不知道做这种事情的最佳方法是什么,所以如果标签有误,我很抱歉。

运行 java 程序以创建/更新 SQLite 数据库的计算机正在运行 Windows Vista,如果重要的话。

【问题讨论】:

    标签: java php mysql sqlite migration


    【解决方案1】:

    您可以在 SQLite 表中包含时间戳,并将默认值设置为插入记录的时间(default now 应该可以解决问题)。然后,您需要在您的 MySQL 数据库(或您的 SQLite 数据库,以更适合您的方式)中包含单个时间戳的表,这将是您的“最后导入时间”。

    何时进行数据传输:

    • 获取上次导入的时间。
    • 将当前时间戳存储在t中。
    • 从您的 SQLite 数据库中获取比 t 更新的所有内容并将其复制到您的 MySQL 数据库中。
    • 将数据库中的上次导入时间从上面更新为 t

    将您正在使用的时间戳存储在 t 中有助于避免遗漏任何内容。

    如果您还更新 SQLite 数据库中的内容而不仅仅是插入内容,那么您可以为“最后修改时间”添加另一个时间戳。然后应用与上述相同的逻辑,将“复制”替换为“更新”或“删除并重新插入”。

    【讨论】:

    • 这是个好主意。这就是我要做的,谢谢!不过,唯一的问题是我实际上并不知道如何以自动方式将数据从我的 SQLite 数据库复制到我的 MySQL 数据库。我可以使用一些转换器来完成它,但它需要我手动完成,这不是我想要做的......你知道我应该如何解决这个问题吗?
    • @Adam:如果您只处理少量数据(比如几千条记录左右),那么您可以通过打开与 SQLite 数据库的连接和与 MySQL 的另一个连接来实现,然后从 SQLite 读取并写入 MySQL。对于这样的事情,低级 JDBC 可能就足够了。我不知道有什么工具可以为您做到这一点,因此您可能需要自己构建一个。或者给它一些时间,看看是否有人提出了一个完全自动化的解决方案。我是一名程序员,我构建自己的工具:)
    • 好吧,我会尝试这样做。我的一张桌子有大约 145,000 条记录(我的其他 5 张桌子在 500 到 8000 条之间),但这只是一次性交易。对于每天的新记录,它只会是大约 300 条记录。我将尝试自己构建这些工具,但我只是一个初学者,所以我们将看看它是如何进行的。非常感谢,非常感谢您的帮助!
    • @Adam:您可以使用sqlite3 -csv 进行初始传输以转储数据,然后使用mysqlimport 将该CSV 加载到MySQL 中。然后,为日报添加一点 JDBC;请记住,在初始设置/导入步骤中,您需要跟踪日报的最后导入时间并初始化(可能手动)。
    猜你喜欢
    • 2013-10-09
    • 2018-10-10
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2023-03-26
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多