如何将机场JSON数组批量导入SQLite数据库?
批量导入JSON机场数据到SQLite的方法
方法一:SQLite命令行直接导入(需SQLite 3.37.0+)
先把你的JSON内容整理成标准数组格式(将所有对象包裹在[]中),保存为airports.json文件。
打开SQLite命令行并连接到目标数据库:
sqlite3 your_database.db
根据你的SQLite版本,执行对应SQL语句:
- 若版本≥3.38.0,使用
json_read直接读取文件:
INSERT INTO airports (icao, name, latitude, longitude) SELECT json_extract(value, '$.icao'), json_extract(value, '$.name'), json_extract(value, '$.latitude'), json_extract(value, '$.longitude') FROM json_read('airports.json');
- 若版本在3.37.0~3.37.1之间,用
readfile配合json_each解析:
INSERT INTO airports (icao, name, latitude, longitude) SELECT json_extract(value, '$.icao'), json_extract(value, '$.name'), json_extract(value, '$.latitude'), json_extract(value, '$.longitude') FROM json_each(readfile('airports.json'));
方法二:Python脚本批量导入(兼容所有版本)
如果你的SQLite版本过低不支持JSON函数,或者需要灵活处理数据,用Python脚本更稳妥:
- 创建
import_airports.py脚本:
import sqlite3 import json # 读取JSON数据 with open('airports.json', 'r', encoding='utf-8') as f: airport_list = json.load(f) # 连接SQLite数据库 conn = sqlite3.connect('your_database.db') cursor = conn.cursor() # 批量插入数据 insert_sql = ''' INSERT INTO airports (icao, name, latitude, longitude) VALUES (?, ?, ?, ?) ''' data_rows = [ (airport['icao'], airport['name'], airport['latitude'], airport['longitude']) for airport in airport_list ] cursor.executemany(insert_sql, data_rows) # 提交更改并关闭连接 conn.commit() conn.close()
- 运行脚本完成导入:
python import_airports.py
注意事项
- 确保JSON文件格式正确,每个对象的键与表字段完全对应;若存在缺失字段,可改用
airport.get('字段名', None)处理空值。 - 若表中
icao是主键,需确保JSON中该字段无重复值,否则插入会触发约束错误。
内容的提问来源于stack exchange,提问作者BraedenK
相关产品推荐
相关产品推荐

