背景介绍
背景就是开发突然问我能不能往数据库导数据,然后只需要某几列的数据。
我的第一想法是:用python脚本读取csv文件,将内容拼接成json格式的文本,然后用脚本的方式导入。后来发现我用的GUI工具就可以直接导入数据到数据库中。
实现过程
既然有工具能够直接导入,那肯定就用现成的工具导入就行了,工具的话,我这里选用的是:NoSQLBooster,官网下载地址:https://nosqlbooster.com/downloads
操作步骤如下:
1、要导入数据到哪个数据库,先选中数据库,然后右键,选择Import Collections,再选择Import from JSON and CSV files 选项
2、在页面选择要导入哪些列,以及对应列的字段类型,都选择好之后点执行即可:
这里选定的csv文件内容如下:
导入数据库后的效果:
如果导入数据后,需要将字段重命令,可以用下面的语句:
格式:
db.集合名称.update({}, {$rename:{"旧键名称":"新键名称"}}, false, true)
举例:将import_test表中的age字段改为大写的AGE字段:
db.import_test.update({}, {$rename:{"age":"AGE"}}, false, true)
不知道细心的朋友有没有发现上面导入的数据有两个问题呦:
1、数据中涉及到中文的,如果导进去的话,会是乱码呦
2、csv文件中如果是类似手机号这种的话,如果在csv里面没有把格式设置好的话,导入进去之后的值发生了变化哟
既然上面的工具导入可能有时候不太靠谱的话,那么,接下来我们来试一试使用python脚本的方式吧:
废话不多说,直接上代码:(注意读取文件的时候,要指定编码,不然可能会出现读取报错/出现乱码等未知的异常)
import pandas as pd
from pymongo import MongoClient
# 读取CSV文件
df = pd.read_csv('import_test.csv',encoding='GBK')
print(df.to_dict('records'))
# 连接MongoDB
client = MongoClient('localhost', 27017)
db = client['study']
collection = db['import_test']
# 将数据写入MongoDB
collection.insert_many(df.to_dict('records'))
运行结果:
mongo中的数据如下: