python 导入csv到MongoDB
·
import pandas as pd
from pymongo import MongoClient
from urllib.parse import quote_plus
def csv_to_mongodb_safe(csv_file_path, host, port, username, password,
db_name, collection_name, auth_source='admin'):
"""
安全的CSV导入MongoDB(处理特殊字符)
"""
try:
# 读取CSV文件
df = pd.read_csv(csv_file_path)
print(f"成功读取CSV文件,共 {len(df)} 行数据")
# 对用户名和密码进行URL编码
encoded_username = quote_plus(username)
encoded_password = quote_plus(password)
# 构建连接字符串
mongodb_uri = f"mongodb://{encoded_username}:{encoded_password}@{host}:{port}/?authSource={auth_source}"
# 连接MongoDB
client = MongoClient(mongodb_uri)
# 测试连接
client.admin.command('ping')
print("成功连接到MongoDB")
# 选择数据库和集合
db = client[db_name]
collection = db[collection_name]
# 转换数据并插入
data = df.to_dict('records')
if data:
result = collection.insert_many(data)
print(f"成功导入 {len(result.inserted_ids)} 条记录")
client.close()
return True
except Exception as e:
print(f"操作失败: {e}")
return False
# 使用示例
if __name__ == "__main__":
success = csv_to_mongodb_safe(
csv_file_path="/tmp/00533_数据库导入.csv",
host="",
port=27017,
username="", # 包含特殊字符的用户名
password="", # 包含特殊字符的密码
db_name="",
collection_name="",
auth_source="admin"
)
更多推荐
所有评论(0)