mysql 数据导出csv到mongo

本文详细介绍了如何将CSV数据导入到MongoDB数据库中。首先,从MySQL导出CSV数据,然后使用mongoimport命令进行导入。文章提供了具体参数说明及实例,如指定数据库IP、用户名、密码、数据库名、集合名等。

一、从myql中导出csv数据;

1.

二、利用mongo的mongoimport来进行导入(支持csv和json格式的文件)

1.概述

使用mongoimport命令可以把指定格式的文件导入到指定集合中。可导入JSON数据以及CSV数据

2.参数说明

说明:

  • -h:数据库宿主机IP
  • -u:数据库用户名
  • -p:数据库密码
  • -d:数据库名字
  • -c:集合名字
  • -f:指明导入的列

以下的例子是csv(--type csv --headerline):

mongoimport --host 127.0.0.1 --port 27017--username 'username' --password 'password' --type csv --headerline --collection p_filed --db targetDb --file /opt/json/xxx.csv

 

### 从 MySQL 导出数据并导入到 MongoDB 的方法 #### 方法概述 为了实现从 MySQLMongoDB 的数据迁移,可以采用多种方式完成这一过程。以下是几种常见的解决方案及其具体实施步骤。 --- #### 方案一:通过脚本导出 JSON 并使用 `mongoimport` 导入 此方案适用于中小型数据集,能够灵活处理字段映射和转换需求。 1. **从 MySQL导出数据** 可以编写 SQL 查询语句并将查询结果保存为 CSV 或 JSON 文件。例如: ```sql SELECT * FROM your_table INTO OUTFILE '/tmp/data.json' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; ``` 2. **将导出的文件转化为 JSON 格式** 如果导出的是 CSV 文件,则需要将其转换为 JSON 格式以便于后续导入。可以通过 Python 脚本来完成该任务: ```python import csv import json with open('data.csv', 'r') as f_input, open('data.json', 'w') as f_output: reader = csv.DictReader(f_input) data = list(reader) json.dump(data, f_output) ``` 3. **使用 `mongoimport` 将 JSON 文件导入 MongoDB** 安装好 MongoDB 后,启动服务并通过命令行工具执行如下指令: ```bash mongoimport --db target_db --collection target_collection --file /path/to/data.json --jsonArray ``` 这里的参数说明如下: - `--db`: 指定目标数据库名称。 - `--collection`: 指定目标集合名称。 - `--file`: 输入文件路径。 - `--jsonArray`: 表明输入是一个数组形式的 JSON 文档[^3]。 --- #### 方案二:利用编程语言直接读取 MySQL 数据并写入 MongoDB 对于更复杂的场景或者超大规模的数据量,可以直接借助编程语言(如 Python、Java 等)来完成整个流程。 ##### 示例代码 (Python 版本) ```python from pymongo import MongoClient import pymysql # 配置 MySQLMongoDB 连接信息 mysql_conn = pymysql.connect( host='localhost', user='root', password='password', database='source_database' ) mongo_client = MongoClient('mongodb://localhost:27017/') mongo_db = mongo_client['target_database'] mongo_collection = mongo_db['target_collection'] try: cursor = mysql_conn.cursor() query = "SELECT id, name, age FROM source_table" cursor.execute(query) rows = cursor.fetchall() # 获取所有记录 documents = [] for row in rows: document = { "_id": str(row[0]), # _id 字段需唯一 "name": row[1], "age": row[2] } documents.append(document) if documents: result = mongo_collection.insert_many(documents) # 批量插入文档 finally: mysql_conn.close() print("Migration completed successfully.") ``` 上述代码实现了从 MySQL 提取数据并批量插入到 MongoDB 的功能[^4]。 --- #### 方案三:第三方工具辅助迁移 如果不想手动开发代码,也可以尝试一些成熟的开源或商业工具简化工作流: - **Talend Data Integration**: 支持跨平台的数据集成与转换操作,提供图形化界面降低学习成本。 - **Hevo Data**: 自动化的 ETL 解决方案之一,支持连接多个源端系统同步至云端存储。 - **Stitch Data**: 类似 Hevo,专注于实时增量复制能力提升效率。 这些工具有助于减少人为干预带来的错误风险同时提高整体性能表现[^1]。 --- ### 注意事项 在实际项目中需要注意以下几点: - 数据模型差异调整:关系型数据库通常基于表格结构设计而 NoSQL 更倾向于嵌套对象表示法因此可能涉及重构逻辑; - 主键冲突解决机制设定合理策略避免重复覆盖现象发生; - 性能优化措施比如分批加载而非一次性全部载入内存当中以免造成资源耗尽等问题出现; ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值