本文目录导读:

- 场景一:批量写入到文本文件/日志文件
- 场景二:批量写入到 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+ 批量提交 - 超大规模 → 分块 + 事务控制
如果你有具体的写入目标(比如写到哪里?格式是什么?数据量多大?),可以提供细节,我直接给你一个完整可用的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播