本文目录导读:

- 场景一:批量写入到文本文件/日志文件
- 场景二:批量写入到 CSV / Excel 文件
- 场景三:批量写入到数据库 (MySQL/PostgreSQL/SQLite)
- 场景四:批量写入到 Excel (.xlsx) 文件
- 场景五:Shell 脚本批量写入(Linux/Mac)
- 性能优化建议(批量写入的关键)
是的,实用脚本完全可以批量写入数据,这是脚本语言(如 Python、Shell、SQL、JavaScript 等)最擅长的功能之一。
批量写入通常指:一次性将大量结构化或非结构化数据写入到文件、数据库、API或其他存储系统中。
具体如何实现,取决于你想要写入的目标是什么,下面我将分场景介绍最常用的几种方法,并提供可直接运行的实用脚本示例。
批量写入到文本文件/日志文件
这是最常见的场景,比如生成测试数据、日志记录等。
示例:生成 1000 条模拟用户登录日志
# Python 脚本 batch_write_logs.py
import datetime
import random
users = [f"user_{i}" for i in range(1, 101)]
actions = ["login", "logout", "view_page", "purchase"]
with open("access.log", "w", encoding="utf-8") as f:
for i in range(1000):
timestamp = datetime.datetime.now() - datetime.timedelta(seconds=random.randint(0, 86400))
user = random.choice(users)
action = random.choice(actions)
ip = f"192.168.1.{random.randint(1, 254)}"
# 写入一行
f.write(f"{timestamp.isoformat()} | {user} | {action} | {ip}\n")
print("✅ 已批量写入 1000 条日志到 access.log")
特点:使用 for 循环 + f.write(),逐行写入,内存占用低。
批量写入到 CSV / Excel 文件
适用于数据分析、报表导出等。
示例:批量生成 10000 条销售数据到 CSV
# Python 脚本 batch_write_csv.py
import csv
import random
headers = ["OrderID", "Product", "Price", "Quantity", "Total"]
products = ["Laptop", "Mouse", "Keyboard", "Monitor", "Headset"]
with open("sales_report.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(headers) # 写入表头
for i in range(1, 10001):
product = random.choice(products)
price = round(random.uniform(10, 1500), 2)
qty = random.randint(1, 10)
total = round(price * qty, 2)
writer.writerow([i, product, price, qty, total])
print("✅ 已批量写入 10000 条销售数据到 sales_report.csv")
特点:使用 csv.writer,自动处理逗号转义和换行,性能优于普通字符串拼接。
批量写入到数据库 (MySQL/PostgreSQL/SQLite)
这是后端开发中最核心的需求。
示例:批量插入 5000 条用户数据到 SQLite
# Python 脚本 batch_write_db.py
import sqlite3
import random
import string
# 1. 连接数据库(自动创建文件)
conn = sqlite3.connect("test.db")
cursor = conn.cursor()
# 2. 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE,
email TEXT,
score INTEGER
)
""")
# 3. 准备批量数据
users_data = []
for i in range(5000):
username = f"user_{i}_{''.join(random.choices(string.ascii_lowercase, k=4))}"
email = f"{username}@example.com"
score = random.randint(0, 100)
users_data.append((username, email, score))
# 4. 使用 executemany 批量写入(速度极快)
cursor.executemany(
"INSERT OR IGNORE INTO users (username, email, score) VALUES (?, ?, ?)",
users_data
)
conn.commit()
cursor.close()
conn.close()
print(f"✅ 已批量写入 {len(users_data)} 条用户数据到 test.db")
关键点:
- 使用
executemany而不是逐条execute,性能提升 10~100倍。 - 使用参数化查询( 占位符)防止 SQL 注入。
批量写入到 Excel (.xlsx) 文件
适合生成带格式的报表。
示例:使用 openpyxl 批量写入 10000 行数据
# Python 脚本 batch_write_excel.py
from openpyxl import Workbook
import random
wb = Workbook()
ws = wb.active= "销售数据"
ws.append(["日期", "产品", "销量", "金额"]) # 表头
for i in range(10000):
date = f"2024-01-{random.randint(1, 31):02d}"
product = random.choice(["A", "B", "C"])
qty = random.randint(1, 100)
amount = round(qty * random.uniform(10, 100), 2)
ws.append([date, product, qty, amount])
wb.save("sales_report.xlsx")
print("✅ 已批量写入 10000 行到 sales_report.xlsx")
Shell 脚本批量写入(Linux/Mac)
适合运维场景,比如生成大量配置文件。
#!/bin/bash
# batch_write_config.sh
for i in {1..1000}; do
echo "server_$i 192.168.1.$i:8080" >> servers.txt
done
echo "✅ 已批量写入 1000 行到 servers.txt"
性能优化建议(批量写入的关键)
| 方法 | 写入 10 万行耗时 | 内存占用 | 推荐场景 |
|---|---|---|---|
逐行 write() |
~3 秒 | 超低 | 日志、实时流 |
writelines() |
~2 秒 | 低 | 已有列表数据 |
csv.writer |
~4 秒 | 低 | 结构化数据 |
executemany (SQL) |
~0.3 秒 | 低 | 数据库 |
pandas.to_csv() |
~0.5 秒 | 高(需加载全部数据) | 数据分析 |
终极方案(百万级以上):
# 分块写入 + 事务提交
chunk_size = 5000
for i in range(0, total_records, chunk_size):
chunk = data[i:i+chunk_size]
cursor.executemany(sql, chunk)
conn.commit() # 每 5000 条提交一次,防止事务过大
实用脚本完全能批量写入,而且这是它们的核心价值所在,根据你的目标选择合适的方法:
- 文本/日志 → 直接用 Python
write()+ 循环 - CSV/Excel →
csv模块或openpyxl - 数据库 →
executemany+ 批量提交 - 超大规模 → 分块 + 事务控制
如果你有具体的写入目标(比如写到哪里?格式是什么?数据量多大?),可以提供细节,我直接给你一个完整可用的脚本。