python批量导入MongoDB数据库

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

由于源文件不是MongoDB支持的JSON和BSON 格式的数据, 所以只能将源数据转变格式后, 用脚本将其导入,所测数据为中科院信工所提供的数据。(这也是在信工所接触的第一个写程序的活。)源码如下:

#!/usr/bin/env python
#encoding:utf-8
###################################
# function: analysis the log in the 'die' to JSON , and
#output the data to the MongoDB.
# data:  2014/3/31
#History: 1.0
###################################
import os
import pymongo
def connect_mongodb():
servers="mongodb://localhost:27017"
conn = pymongo.Connection(servers)
print conn.database_names()
db = conn.my_mongodb            #连接库
return db
def str_process(string,db):
d={}
if string == '\n':
return
string2=str(string)
print '-----'+string
string2=string2.split(' ')
print '---------------'
print string2
for i in string2:
print i
print '------------'
string2[3].split('\n')
d['projectcode']=string2[0]
d['pagename']=string2[1]
d['pageview']=string2[2]
d['bytes']=string2[3][:-1]
db.user.insert(d)
def file_process(source_file,db):
string2=''
f=open(source_file,'r')
print 'file name :'+source_file
while True:
string2=f.readline()
if string2 == '':
break
string2=str_process(string2,db)
print string2
def get_dir_list(dir):  #input the dir ,will output the all filename
dat0=[]
for i in os.listdir(dir):
dat0.append(i)
return dat0
def all_file_process():
dir_file_name=''
dir_list=[]
dir_file_name=raw_input('please input the dir name:')
dir_list=get_dir_list(dir_file_name)
print dir_list
db=connect_mongodb()
for i in dir_list:
if str(i) != 'log_file_process.py':
file_process(str(i),db)
all_file_process()

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
7天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
7天前
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
|
7天前
|
SQL 关系型数据库 MySQL
Python操作mysql数据库
Python操作mysql数据库
|
11天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
21 0
|
11天前
|
SQL 缓存 数据库
在Python Web开发过程中:数据库与缓存,如何使用ORM(例如Django ORM)执行查询并优化查询性能?
在Python Web开发中,使用ORM如Django ORM能简化数据库操作。为了优化查询性能,可以:选择合适索引,避免N+1查询(利用`select_related`和`prefetch_related`),批量读取数据(`iterator()`),使用缓存,分页查询,适时使用原生SQL,优化数据库配置,定期优化数据库并监控性能。这些策略能提升响应速度和用户体验。
11 0
|
12天前
|
SQL 关系型数据库 MySQL
第十三章 Python数据库编程
第十三章 Python数据库编程
|
12天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
11月前
|
Python
答粉丝问|Python中模块导入方法的比较
答粉丝问|Python中模块导入方法的比较
53 0
|
JSON 数据格式 Python
Python基础 模块化编程(模块的导入) 模块化编程 模块以主程序的方式运行 包和目录 第三方库的安装和导入方法
python基础知识模块,模块化编程,模块的创建和导入 python基础,模块的创建和导入,让模块以主程序的方式运行,python中的包和目录的区别和创建。模块导入另一个包的模块的方法,导入带有包的模块时的注意事项,常见的内置模块。 第三方模块的安装和导入的方法
Python基础 模块化编程(模块的导入)   模块化编程 模块以主程序的方式运行 包和目录 第三方库的安装和导入方法