如何在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格式
- 终端中用
isql-fb连接目标.fdb文件:
(默认密码为isql-fb -user SYSDBA -password your_password /path/to/your/file.fdbmasterkey,若修改过请替换为实际密码) - 在交互式命令行内执行导出操作(以导出
your_table表为例):OUTPUT TO /path/to/output.csv FORMAT CSV DELIMITED BY ',' QUOTE '"'; SELECT * FROM your_table; OUTPUT OFF; - 重复上述步骤可导出多个表,也可编写批量脚本处理。
转换为MySQL格式
- 先按上述步骤将数据导出为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;
secure_file_priv配置,或添加LOCAL参数:LOAD DATA LOCAL INFILE) - 登录MySQL:
方法二:使用Python脚本批量转换
适合需要批量处理多表的场景:
- 安装依赖库:
pip install fdb mysql-connector-python - 示例脚本:
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() - 运行脚本:
python convert_fdb.py
方法三:使用开源图形化转换工具
可以选择DBConvert Studio的跨平台版本,支持Firebird到MySQL的直接转换,也可导出为CSV。操作流程:下载对应Linux/Mac版本后,通过图形界面选择源.fdb文件和目标格式/数据库,跟随向导完成转换即可。
内容的提问来源于stack exchange,提问作者Vicente Echo
相关产品推荐
相关产品推荐

