HarmonyOS 鸿蒙Next中,如何利用配置文件同步MySql数据到创建的SQLite数据库中

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next中,如何利用配置文件同步MySql数据到创建的SQLite数据库中 我的MySQL数据库接收的是emqx传过来的数据,SQLite是本地创建数据库,想在它们中间做一个数据传输

2 回复
  1. 从mysql数据库导出sql语句到文件
    右键 备份/导出 以SQL转储文件备份数据库…
    选择Tables,删除其它的,选择需要的表,写入文件选项只需要勾选 在Insert语句周围添加锁定
    注意 不要选择 BULK INSERT 语句选项。否则insert语句会连在一起,sqlite不支持这种格式语句。

  2. 处理sql语句文件
    手动删除其它语句,只需要保留Insert into开头的sql语句。
    导出的sql语句, 由于策略和自动任务的JSON字段(jsonParams, )会包含转义字符。
    分别手动替换 "& , \r , \n 为 ", 空字符, 空字符。 注意 查找模式 选择 普通

  3. 导入数据到sqlite
    使用sqliteSpy打开一个干净的emap.sqlite文件,Executeà Execute SQL 执行SQL语句
    查看表数据:导入成功

更多关于HarmonyOS 鸿蒙Next中,如何利用配置文件同步MySql数据到创建的SQLite数据库中的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,可以通过配置文件实现MySQL数据同步到SQLite数据库。首先,配置文件中定义MySQL连接信息和SQLite数据库路径。使用ohos.data.rdb模块创建SQLite数据库和表结构。通过ohos.data.distributedData模块连接MySQL,查询数据并插入到SQLite数据库中。配置文件示例如下:

{
  "mysql": {
    "host": "localhost",
    "user": "root",
    "password": "password",
    "database": "test_db"
  },
  "sqlite": {
    "path": "/data/data/com.example.app/databases/test.db"
  }
}

代码示例:

import relationalStore from '@ohos.data.relationalStore';
import distributedData from '@ohos.data.distributedData';

const config = require('./config.json');

// 创建SQLite数据库
const storeConfig = {
  name: config.sqlite.path,
  securityLevel: relationalStore.SecurityLevel.S1
};
relationalStore.getRdbStore(this.context, storeConfig, (err, store) => {
  if (err) {
    console.error(`Failed to get RdbStore. Code:${err.code},message:${err.message}`);
    return;
  }
  // 创建表
  store.executeSql('CREATE TABLE IF NOT EXISTS test_table (id INTEGER PRIMARY KEY, name TEXT)');
});

// 连接MySQL并同步数据
const mysqlConnection = distributedData.createConnection({
  host: config.mysql.host,
  user: config.mysql.user,
  password: config.mysql.password,
  database: config.mysql.database
});

mysqlConnection.query('SELECT * FROM test_table', (err, results) => {
  if (err) {
    console.error(`Failed to query data. Code:${err.code},message:${err.message}`);
    return;
  }
  results.forEach(row => {
    store.executeSql('INSERT INTO test_table (id, name) VALUES (?, ?)', [row.id, row.name]);
  });
});

以上代码实现了从MySQL查询数据并插入到SQLite数据库中。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!