参考资料

  1. MySQL 删除数据表
  2. MySQL 处理重复数据详细说明以及案例
  3. MySQL 临时表详细说明以及案例
  4. MySQL 索引详细说明以及案例
  5. MySQL 导入数据详细说明以及案例
  6. MySQL ALTER 命令详细说明以及案例
  7. MySQL DELETE 语句详细说明以及案例
  8. MySQL LIKE 子句详细说明以及案例

将SQLite数据库迁移到MySQL数据库涉及多个步骤

将SQLite数据库迁移到MySQL数据库涉及多个步骤,包括数据导出、数据格式转换以及数据导入。这里我将详细介绍整个过程。

步骤 1: 导出SQLite数据库

首先,你需要从SQLite数据库导出数据。可以使用SQLite的命令行工具或编程语言(如Python)来导出数据。

使用SQLite命令行工具:

打开命令行工具。

使用.output命令将输出重定向到一个SQL文件:

sqlite3 your_database.db ".output your_database.sql" ".dump" ".exit"

这将生成一个包含所有表结构和数据的your_database.sql文件。

使用Python:

如果你熟悉Python,可以使用sqlite3库来导出数据:

import sqlite3
import csv

连接SQLite数据库
conn = sqlite3.connect('your_database.db')
cursor = conn.cursor()

获取所有表名
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()

遍历每个表,导出到CSV文件
for table_name in tables:
cursor.execute(f"SELECT * FROM {table_name[0]};")
rows = cursor.fetchall()
with open(f"{table_name[0]}.csv", 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow([i[0] for i in cursor.description]) # 写入列名
writer.writerows(rows)

conn.close()
步骤 2: 转换数据格式(可选)

如果你的数据在迁移过程中需要特定的格式转换(例如,日期格式、数据类型等),你可以使用Python的pandas库来处理这些转换:

import pandas as pd
import sqlite3

读取CSV文件(例如,从SQLite导出的第一个表)
df = pd.read_csv('your_table.csv')

进行必要的转换,例如转换日期格式
df['date_column'] = pd.to_datetime(df['date_column'])

保存转换后的数据到新的CSV文件或直接用于下一步导入MySQL
df.to_csv('your_table_converted.csv', index=False)
步骤 3: 导入MySQL数据库

在MySQL中,你可以使用命令行工具或编程语言(如Python)来导入数据。

使用MySQL命令行工具:

登录MySQL:

mysql -u username -p -h hostname databasename

创建数据库(如果尚未创建):

CREATE DATABASE databasename;
USE databasename;

创建表结构(如果需要手动创建表结构):

SOURCE your_database.sql; # 此步骤仅在手动修改了SQLite的导出文件后才需要,例如更改数据类型等。

导入数据:

LOAD DATA INFILE '/path/to/your_table.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

或者使用mysqlimport命令:

mysqlimport --ignore-lines=1 -u username -p databasename /path/to/your_table.csv

注意:--ignore-lines=1选项用于跳过CSV文件的第一行(列名)。

使用Python:

使用pandas和sqlalchemy库将数据导入MySQL:

from sqlalchemy import create_engine
import pandas as pd
import pymysql # 或者使用其他MySQL驱动,如mysql-connector-python或PyMySQL等。
pymysql.install_as_MySQLdb() # 如果使用SQLAlchemy与MySQLdb一起工作。通常不推荐,因为推荐使用PyMySQL或mysql-connector-python。
from sqlalchemy import MetaData, Table, Column, Integer, String, create_engine, ForeignKey # 根据需要导入其他类型。
from sqlalchemy.orm import sessionmaker, relationship, backref, mapper, clear_mappers, session, Session # 根据需要导入其他功能。
from sqlalchemy.ext.declarative import declarative_base # 根据需要导入其他功能。例如,如果你使用Declarative Base。