接入数据库
This commit is contained in:
1 parent
1bd9d25f60
commit
59fcb11ffa
9 files changed
+1560
-103
No files matched your search
@@ -0,0 +1,67 @@
|
||||
"""Migrate existing CSV cache data to SQLite database."""
|
||||
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
# Add project root to path
|
||||
sys.path.append(str(Path(__file__).resolve().parent.parent))
|
||||
|
||||
import pandas as pd
|
||||
from data.database import DatabaseManager
|
||||
|
||||
def migrate():
|
||||
cache_dir = Path("./data/cache")
|
||||
db_path = cache_dir / "market_data.db"
|
||||
|
||||
print(f"Initializing database at {db_path}...")
|
||||
db_manager = DatabaseManager(str(db_path))
|
||||
|
||||
# Find all CSV files
|
||||
csv_files = list(cache_dir.glob("*.csv"))
|
||||
print(f"Found {len(csv_files)} CSV files to migrate.")
|
||||
|
||||
success_count = 0
|
||||
fail_count = 0
|
||||
|
||||
for csv_file in csv_files:
|
||||
try:
|
||||
filename = csv_file.name
|
||||
print(f"Processing {filename}...")
|
||||
|
||||
# Parse filename
|
||||
parts = filename.split('_')
|
||||
if len(parts) < 2:
|
||||
print(f" ⚠ Skipping {filename}: Invalid naming format")
|
||||
continue
|
||||
|
||||
symbol = parts[0]
|
||||
timeframe = parts[1]
|
||||
|
||||
# Validate symbol and timeframe (basic check)
|
||||
if timeframe not in ['1h', '15m']:
|
||||
# Relaxed check, just warning
|
||||
print(f" ℹ Note: Unfamiliar timeframe {timeframe} in {filename}")
|
||||
|
||||
# Read CSV
|
||||
df = pd.read_csv(csv_file)
|
||||
if 'timestamp' not in df.columns:
|
||||
print(f" ⚠ Skipping {filename}: No timestamp column")
|
||||
continue
|
||||
|
||||
# Save to DB
|
||||
db_manager.save_ohlcv(df, symbol, timeframe)
|
||||
print(f" ✓ Imported {len(df)} records for {symbol} {timeframe}")
|
||||
success_count += 1
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ Error processing {csv_file.name}: {e}")
|
||||
fail_count += 1
|
||||
|
||||
print("\nMigration complete!")
|
||||
print(f"Successfully migrated: {success_count} files")
|
||||
print(f"Failed: {fail_count} files")
|
||||
|
||||
if __name__ == "__main__":
|
||||
migrate()
|
||||
Reference in new issue
Block a user