gpt4 book ai didi

android - MySQL 到 Sqlite 从 PHP 同步到移动应用程序 (iOS/Android)

转载 作者:行者123 更新时间:2023-11-29 21:29:21 27 4
gpt4 key购买 nike

要使用 PHP Web 应用程序同步 mysql 数据库与 sqlite 数据库,我将

  1. 在 MySQL 中创建 SQLITE 表的“ View ”镜像
  2. 在MySQL中的镜像“ View ”上选择更改的数据
  3. 使用mysqldump转储sqlite的sql并将其保存在服务器上的文件中
  4. 从移动设备下载该文件
  5. 直接导入数据到sqlite

另一种方法是不使用中间“ View ”表并使用“SELECT”或mysqldump转储数据并在设备或服务器上解析它,因此它可以被sqlite读取

为 SQLITE 在客户端设备上需要的每个表创建镜像“ View ”有什么缺点吗?还是有另一种“标准”方法来同步这两个我在互联网上找不到的方法?

编辑:经过搜索和编码,最后我决定这样做:

  1. 在服务器上从 PHP 构建 SQLite 的“insert into ...”语句并将其保存到压缩文件
  2. 在移动设备上下载文件并将提取的 sql 直接插入 SQLITE

这里是生成 mysqldump 类似输出的 php 代码:

/** key [SQLITE column name] => value [MySQL select column] */
$table_structure = array(
'id' => 'id',
'title' => 'title',
'type' => 'COALESCE(type, "")', /** u need to wrap any column that is nullable like this **/
'flags' => 'COALESCE(type, "")', /** u need to wrap any column that is nullable like this **/
'view_field' => 'view_field',
'view_year' => 'view_year',
....
....
'updated_at' => 'UNIX_TIMESTAMP(updated_at)');
$into_query = '';
$into_values = '';
$indexer = 0;
foreach ($table_structure as $sqlite => $mysql) {
$into_query .= (($indexer !== 0)? ',':'').$sqlite;
$into_values .= (($indexer !== 0)? ',",",':'').'"\'",'.$mysql.',"\'"';
$indexer++;
}
$output_filepath = "some where nice";
$query = 'SELECT CONCAT("INSERT INTO '.$table.'('.$into_query.') VALUES(",'.$into_values.',");") FROM '.$table.' ' ... "INTO OUTFILE $output_filepath CHARACTER SET utf8";

我希望这是一个好方法,有一天可能会对某人有所帮助:)

最佳答案

Approach 1: using sqlite db file

您提到的任何步骤都是正确的。当您必须从设备向 web/php 发送大量数据(许多表)时使用此方法,反之亦然。

在较慢的互联网连接和 2G 中,它都需要时间。在 3G 中它的速度很快(它还取决于您在移动/PHP 上编写的用于上传和下载文件的代码)。

确保数据库文件大小较小,如果较大,则制作包含数据库文件的 zip 文件。

<小时/>

Approach 2: make using json (SELECT *) parse in device

当您丢失具有大量字段的表时,这是一个非常漫长的过程。你必须从表中一一获取数据,将其发送到服务器/php,其在处理后返回数据。然后你必须再次在设备表中插入数据。

这也取决于互联网以及您的代码。对于设备来说太慢并且需要更多时间。

<小时/>

这两种方法的共同点是仅在需要时或在需要设备/PHP 的情况下发送/接收数据。不要发送未使用的数据来快速工作。

关于android - MySQL 到 Sqlite 从 PHP 同步到移动应用程序 (iOS/Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35367243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com