File size: 1,548 Bytes
f2a62c1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import psycopg2
from psycopg2.extras import RealDictCursor
from dotenv import load_dotenv
import os

load_dotenv(dotenv_path='E:/ClearVoice/.env', override=True)


local_conn = psycopg2.connect(os.getenv('DATABASE_URL'), cursor_factory=RealDictCursor)
local_cur = local_conn.cursor()

supa_conn = psycopg2.connect(os.getenv('SUPABASE_DATABASE_URL'))
supa_cur = supa_conn.cursor()

print("Fetching papers from local DB...")
local_cur.execute("SELECT pmid, title, abstract, authors, year, journal, study_type, embedding FROM studies")
papers = local_cur.fetchall()
print(f"Found {len(papers)} papers. Migrating...")

for i, paper in enumerate(papers):
    try:
        supa_cur.execute("""
            INSERT INTO studies (pmid, title, abstract, authors, year, journal, study_type, embedding)
            VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
            ON CONFLICT (pmid) DO NOTHING
        """, (
            paper['pmid'],
            paper['title'],
            paper['abstract'],
            paper['authors'],
            paper['year'],
            paper['journal'],
            paper['study_type'],
            paper['embedding']
        ))

        if (i + 1) % 100 == 0:
            supa_conn.commit()
            print(f"  Migrated {i + 1} papers...")

    except Exception as e:
        print(f"Error on {paper['pmid']}: {e}")
        supa_conn.rollback()
        continue

supa_conn.commit()
local_cur.close()
local_conn.close()
supa_cur.close()
supa_conn.close()
print(f"Migration complete. {len(papers)} papers migrated to Supabase.")