Spaces:
Running
on
Zero
Running
on
Zero
sqlalchemy
Browse files- polls/databases/insert_line.py +39 -18
- requirements.txt +1 -0
polls/databases/insert_line.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import pandas as pd
|
2 |
import re
|
3 |
-
|
|
|
4 |
import psycopg2
|
5 |
|
6 |
# チャット履歴ファイルを読み込む関数(最初の3行をスキップ)
|
@@ -40,30 +41,50 @@ def connect_to_db():
|
|
40 |
)
|
41 |
return conn
|
42 |
|
43 |
-
#
|
44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
|
46 |
-
#
|
47 |
-
|
48 |
-
columns_to_mask = ['送信者タイプ', '送信者名', '送信日', '送信時刻', '内容']
|
49 |
-
masked_chat_history_df = mask_specific_columns(chat_history_df, columns_to_mask)
|
50 |
|
51 |
# データベースの接続設定
|
52 |
engine = create_engine('postgresql+psycopg2://miyataken999:yz1wPf4KrWTm@ep-odd-mode-93794521.us-east-2.aws.neon.tech:5432/neondb')
|
53 |
|
54 |
-
#
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
|
63 |
-
#
|
64 |
-
|
65 |
|
66 |
-
print("
|
67 |
|
68 |
# データベースに接続してクエリを実行する関数
|
69 |
def execute_query(query, engine):
|
|
|
1 |
import pandas as pd
|
2 |
import re
|
3 |
+
import os
|
4 |
+
from sqlalchemy import create_engine, inspect, Table, MetaData, Column, Integer, String, text
|
5 |
import psycopg2
|
6 |
|
7 |
# チャット履歴ファイルを読み込む関数(最初の3行をスキップ)
|
|
|
41 |
)
|
42 |
return conn
|
43 |
|
44 |
+
# フォルダー内のすべてのCSVファイルを処理し、PostgreSQLにインポートする関数
|
45 |
+
def process_and_import_csv_folder(folder_path, engine):
|
46 |
+
# フォルダー内のすべてのCSVファイルを取得
|
47 |
+
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
|
48 |
+
|
49 |
+
for csv_file in csv_files:
|
50 |
+
file_path = os.path.join(folder_path, csv_file)
|
51 |
+
|
52 |
+
# チャット履歴を読み込み、特定の列の個人情報をマスク
|
53 |
+
chat_history_df = load_chat_history(file_path)
|
54 |
+
columns_to_mask = ['送信者タイプ', '送信者名', '送信日', '送信時刻', '内容']
|
55 |
+
masked_chat_history_df = mask_specific_columns(chat_history_df, columns_to_mask)
|
56 |
+
|
57 |
+
# マスクされたデータをPostgreSQLにインポート
|
58 |
+
masked_chat_history_df.to_sql('fasis_chat_history', engine, if_exists='append', index=False)
|
59 |
|
60 |
+
# ファイルパスの設定
|
61 |
+
folder_path = '/home/user/app/polls/databases/test.csv' # CSVファイルが格納されているフォルダーのパス
|
|
|
|
|
62 |
|
63 |
# データベースの接続設定
|
64 |
engine = create_engine('postgresql+psycopg2://miyataken999:yz1wPf4KrWTm@ep-odd-mode-93794521.us-east-2.aws.neon.tech:5432/neondb')
|
65 |
|
66 |
+
# テーブルを再作成
|
67 |
+
metadata = MetaData()
|
68 |
+
|
69 |
+
if inspect(engine).has_table("fasis_chat_history"):
|
70 |
+
table = Table('fasis_chat_history', metadata, autoload_with=engine)
|
71 |
+
table.drop(engine)
|
72 |
+
|
73 |
+
table = Table('fasis_chat_history', metadata,
|
74 |
+
Column('id', Integer, primary_key=True, autoincrement=True),
|
75 |
+
Column('送信者タイプ', String),
|
76 |
+
Column('送信者名', String),
|
77 |
+
Column('送信日', String),
|
78 |
+
Column('送信時刻', String),
|
79 |
+
Column('内容', String),
|
80 |
+
Column('AnswerField', String))
|
81 |
+
|
82 |
+
metadata.create_all(engine)
|
83 |
|
84 |
+
# フォルダー内のすべてのCSVファイルを処理し、PostgreSQLにインポート
|
85 |
+
process_and_import_csv_folder(folder_path, engine)
|
86 |
|
87 |
+
print("すべてのCSVファイルのデータインポートが完了しました。")
|
88 |
|
89 |
# データベースに接続してクエリを実行する関数
|
90 |
def execute_query(query, engine):
|
requirements.txt
CHANGED
@@ -56,3 +56,4 @@ torchvision
|
|
56 |
transformers
|
57 |
langchain
|
58 |
langchain_groq
|
|
|
|
56 |
transformers
|
57 |
langchain
|
58 |
langchain_groq
|
59 |
+
sqlalchemy
|