You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux/MacOS系统下将.fdb文件转换为MySQL(.sql)或CSV格式?

Linux/MacOS下将.fdb文件转换为MySQL(.sql)或CSV格式的方法

方法一:使用Firebird官方命令行工具(推荐)

.fdb是Firebird数据库的原生文件格式,首先需要安装Firebird客户端:

  • Linux:根据发行版选择包管理器安装,比如Debian/Ubuntu:sudo apt-get install firebird3.0-common firebird3.0-client;CentOS/RHEL:sudo dnf install firebird
  • MacOS:通过Homebrew安装:brew install firebird

转换为CSV格式

  1. 终端中用isql-fb连接目标.fdb文件:
    isql-fb -user SYSDBA -password your_password /path/to/your/file.fdb
    
    (默认密码为masterkey,若修改过请替换为实际密码)
  2. 在交互式命令行内执行导出操作(以导出your_table表为例):
    OUTPUT TO /path/to/output.csv FORMAT CSV DELIMITED BY ',' QUOTE '"';
    SELECT * FROM your_table;
    OUTPUT OFF;
    
  3. 重复上述步骤可导出多个表,也可编写批量脚本处理。

转换为MySQL格式

  1. 先按上述步骤将数据导出为CSV,再通过MySQL客户端导入:
    • 登录MySQL:mysql -u your_mysql_user -p
    • 创建匹配原表结构的目标库和表:
      CREATE DATABASE target_db;
      USE target_db;
      CREATE TABLE your_table (字段定义需与原表一致);
      
    • 导入CSV文件:
      LOAD DATA INFILE '/path/to/output.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
      
    (MacOS环境下可能需修改MySQL的secure_file_priv配置,或添加LOCAL参数:LOAD DATA LOCAL INFILE)

方法二:使用Python脚本批量转换

适合需要批量处理多表的场景:

  1. 安装依赖库:pip install fdb mysql-connector-python
  2. 示例脚本:
    import fdb
    import mysql.connector
    import csv
    
    # 连接Firebird数据库
    fb_conn = fdb.connect(
        dsn='/path/to/your/file.fdb',
        user='SYSDBA',
        password='masterkey'
    )
    fb_cursor = fb_conn.cursor()
    
    # 获取所有非系统表名
    fb_cursor.execute("SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG=0")
    tables = [row[0].strip() for row in fb_cursor.fetchall()]
    
    # 批量导出为CSV
    for table in tables:
        fb_cursor.execute(f"SELECT * FROM {table}")
        with open(f"{table}.csv", 'w', newline='') as f:
            writer = csv.writer(f, delimiter=',', quotechar='"')
            # 写入表头
            writer.writerow([desc[0] for desc in fb_cursor.description])
            # 写入数据行
            writer.writerows(fb_cursor.fetchall())
    
    # 可选:直接导入到MySQL(需提前适配字段类型)
    mysql_conn = mysql.connector.connect(
        host='localhost',
        user='your_mysql_user',
        password='your_mysql_pwd',
        database='target_db'
    )
    mysql_cursor = mysql_conn.cursor()
    
    # 示例:导入单个表(需根据实际字段类型调整建表语句)
    # with open('your_table.csv', 'r') as f:
    #     reader = csv.reader(f)
    #     headers = next(reader)
    #     create_sql = f"CREATE TABLE {table} ({', '.join([f'{col} VARCHAR(255)' for col in headers])})"
    #     mysql_cursor.execute(create_sql)
    #     for row in reader:
    #         insert_sql = f"INSERT INTO {table} VALUES ({', '.join(['%s']*len(row))})"
    #         mysql_cursor.execute(insert_sql, row)
    # mysql_conn.commit()
    
    # 关闭连接
    fb_cursor.close()
    fb_conn.close()
    mysql_cursor.close()
    mysql_conn.close()
    
  3. 运行脚本:python convert_fdb.py

方法三:使用开源图形化转换工具

可以选择DBConvert Studio的跨平台版本,支持Firebird到MySQL的直接转换,也可导出为CSV。操作流程:下载对应Linux/Mac版本后,通过图形界面选择源.fdb文件和目标格式/数据库,跟随向导完成转换即可。

内容的提问来源于stack exchange,提问作者Vicente Echo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:52:17