카테고리 없음

Python을 사용하여 CSV 파일을 SQL Server로 가져오기

기하 2022. 9. 7. 08:06

https://datatofish.com/import-csv-sql-server-python/

 

Import a CSV File to SQL Server using Python - Data to Fish

In this guide, you'll see how to import a CSV file to SQL Server using Python. Both Pandas and Pyodbc will be used to accomplish this task.

datatofish.com

Python 을 사용하여 CSV 파일을 SQL Server로 가져오는 방법은 여러 가지가 있습니다 . 
다음 2개의 Python 라이브러리를 사용하여 데이터를 가져오는 간단한 기술을 볼 수 있습니다.

  • Pandas – CSV 파일을 Python으로 가져오고 DataFrame을 만드는 데 사용됩니다.
  • Pyodbc – Python을 SQL Server에 연결하는 데 사용

Python을 사용하여 CSV 파일을 SQL Server로 가져오는 단계

1단계: CSV 파일 준비

시작하려면 SQL Server로 가져올 CSV 파일을 준비합니다.
예를 들어 CSV 파일이 준비되었다고 가정해 보겠습니다.

  • CSV 파일 이름은 'products'입니다.
  • CSV 파일은 C:\Users\사용자명\Desktop\Test\products.csv 경로에 저장됩니다.

또한 CSV 파일에는 다음 데이터가 포함됩니다.

product_id product_name price
1 랩탑 1200
2 인쇄기 200
3 태블릿 350
4 건반 80
5 감시 장치 400

 

2단계: CSV 파일을 DataFrame으로 가져오기

Pandas 라이브러리를 사용 하여 CSV 파일을 DataFrame으로 가져올 수 있습니다.

다음은 예제에서 CSV 파일을 가져오는 코드입니다(컴퓨터에서 CSV 파일이 저장된 위치를 반영하도록 경로를 변경해야 합니다 ).

import pandas as pd
data = pd.read_csv(r'C:\Users\사용자이름\Desktop\Test\products.csv')   
df = pd.DataFrame(data)

print(df)

Python 에서 DataFrame 은 다음과 같이 표시됩니다.

       product_id  product_name  price
0           1        Laptop      1200
1           2       Printer      200
2           3        Tablet      350
3           4      Keyboard      80
4           5       Monitor      400

3단계: Python을 SQL Server에 연결

Python을 SQL 서버에 연결하려면 다음이 필요합니다.

  • 서버 이름 . 데모를 위해 서버 이름이 RON\SQLEXPRESS 라고 가정하겠습니다.
  • 데이터베이스 이름 . 이 예의 데이터베이스 이름은 다음과 같습니다. test_database

다음은 예제에서 Python을 SQL에 연결하는 코드입니다.

import pyodbc

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=RON\SQLEXPRESS;'
                      'Database=test_database;'
                      'Trusted_Connection=yes;')
cursor = conn.cursor()

pyodbc를 사용하여 Python을 SQL Server에 연결 하는 전체 단계를 설명하는 다음 가이드를 확인하는 것이 좋습니다.

4단계: Python을 사용하여 SQL Server에서 테이블 만들기

다음 으로 SQL Server에서 테이블을 생성 하는 구문을 추가합니다 . 이 테이블은 CSV 파일에서 가져온 데이터를 저장하는 데 사용됩니다.

이 예에서는 다음 구문을 추가하여 ' products ' 테이블을 생성할 수 있습니다.

cursor.execute('''
		CREATE TABLE products (
			product_id int primary key,
			product_name nvarchar(50),
			price int
			)
               ''')

코드 를 실행할 때마다 테이블을 생성할 수 있습니다. 해당 코드를 한 번만 사용해야 합니다. 그렇지 않으면 아래와 같은 오류가 발생합니다.

ProgrammingError: (’42S01′, “[42S01] [Microsoft][ODBC SQL Server Driver][SQL Server]There is already an object named ‘products’ in the database. (2714) (SQLExecDirectW)”)

5단계: 테이블에 DataFrame 데이터 삽입

다음은 제품 테이블 에 DataFrame 데이터(2단계)를 삽입하는 구문입니다 .

for row in df.itertuples():
    cursor.execute('''
                INSERT INTO products (product_id, product_name, price)
                VALUES (?,?,?)
                ''',
                row.product_id, 
                row.product_name,
                row.price
                )
conn.commit()

다음은 Python을 사용하여 CSV 파일을 SQL Server로 가져오는 전체 코드입니다.

import pandas as pd
import pyodbc

# Import CSV
data = pd.read_csv (r'C:\Users\Ron\Desktop\Test\products.csv')   
df = pd.DataFrame(data)

# Connect to SQL Server
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=RON\SQLEXPRESS;'
                      'Database=test_database;'
                      'Trusted_Connection=yes;')
cursor = conn.cursor()

# Create Table
cursor.execute('''
		CREATE TABLE products (
			product_id int primary key,
			product_name nvarchar(50),
			price int
			)
               ''')

# Insert DataFrame to Table
for row in df.itertuples():
    cursor.execute('''
                INSERT INTO products (product_id, product_name, price)
                VALUES (?,?,?)
                ''',
                row.product_id, 
                row.product_name,
                row.price
                )
conn.commit()

Python 에서 코드를 실행합니다 (CSV 파일이 저장된 경로를 조정하고 데이터베이스 연결 정보를 변경한 후).

6단계: 테스트 수행

CSV 파일의 값을 SQL Server로 가져왔는지 확인하기 위해 간단한 쿼리를 실행해 보겠습니다.

제품에서 * 선택

결과는 다음과 같습니다.

product_id product_name price
1 랩탑 1200
2 인쇄기 200
태블릿 350
4 건반 80
5 감시 장치 400