在 CentOS 上“导入 JSON 数据”通常要看你导入到哪里,常见场景有下面几种,我分别说明:
CREATE TABLE test (
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON
);
导入方式(通过程序或 LOAD DATA 不太适合 JSON),推荐用脚本:
Python 示例
yum install python3 -y
pip3 install pymysql
import json, pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
cursor = conn.cursor()
with open('data.json') as f:
for line in f:
data = json.loads(line)
cursor.execute("INSERT INTO test (data) VALUES (%s)", (json.dumps(data),))
conn.commit()
conn.close()
MongoDB 原生支持 JSON
# 安装 mongodb 客户端
yum install mongodb-org-tools -y
# 导入
mongoimport --db mydb --collection mycol --file data.json --jsonArray
如果是每行一个 JSON(JSONL):
mongoimport --db mydb --collection mycol --file data.json
yum install elasticsearch -y
curl -H "Content-Type: application/json" \
-XPOST "localhost:9200/index/_doc/_bulk?pretty" \
--data-binary @data.json
(data.json 需是 bulk 格式)
jqyum install jq -y
cat data.json | jq .
提取字段:
jq '.name' data.json
python3 -c "import json; print(json.load(open('data.json')))"
例如 systemd 或脚本:
export CONFIG=$(cat config.json)
我可以给你精确到命令的导入方案。