[PYTHON] 파이썬을 사용하여 csv 파일을 SQL Server 데이터베이스에 작성하기
PYTHON파이썬을 사용하여 csv 파일을 SQL Server 데이터베이스에 작성하기
안녕하세요, 저는 파이썬을 사용하여 SQL Server 데이터베이스의 테이블에 csv 파일을 작성하려고합니다. 매개 변수를 전달할 때 오류가 발생하지만 수동으로 수행하면 오류가 발생하지 않습니다. 다음은 실행중인 코드입니다.
cur=cnxn.cursor() # Get the cursor
csv_data = csv.reader(file(Samplefile.csv')) # Read the csv
for rows in csv_data: # Iterate through csv
cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)",rows)
cnxn.commit()
오류 : pyodbc.DataError : ( '22001', [22001] [Microsoft] [ODBC SQL Server 드라이버] [SQL 서버] 문자열 또는 이진 데이터가 잘립니다. (8152) (SQLExecDirectW); [Microsoft] [ ODBC SQL Server 드라이버] [SQL Server] 문이 종료되었습니다. (3621) ')
해결법
-
==============================
1.테이블 및 CSV 파일 형식과 일치하는 자리 표시 자의 수를 확인하려면 동적으로 쿼리를 작성하는 것이 좋습니다. 그런 다음 입력 한 내용을 확인하는 대신 테이블과 CSV 파일이 올바른지 확인하는 것입니다. 코드에서 자리 표시 자.
테이블 및 CSV 파일 형식과 일치하는 자리 표시 자의 수를 확인하려면 동적으로 쿼리를 작성하는 것이 좋습니다. 그런 다음 입력 한 내용을 확인하는 대신 테이블과 CSV 파일이 올바른지 확인하는 것입니다. 코드에서 자리 표시 자.
다음 예제에서는
... with open ('test.csv', 'r') as f: reader = csv.reader(f) columns = next(reader) query = 'insert into MyTable({0}) values ({1})' query = query.format(','.join(columns), ','.join('?' * len(columns))) cursor = connection.cursor() for data in reader: cursor.execute(query, data) cursor.commit()
열 이름이 파일에 포함되지 않은 경우 :
... with open ('test.csv', 'r') as f: reader = csv.reader(f) data = next(reader) query = 'insert into dbo.Test values ({0})' query = query.format(','.join('?' * len(data))) cursor = connection.cursor() cursor.execute(query, data) for data in reader: cursor.execute(query, data) cursor.commit()
-
==============================
2.예를 들어 인수로 열을 전달하려고 시도 했습니까?
예를 들어 인수로 열을 전달하려고 시도 했습니까?
for rows in csv_data: # Iterate through csv cur.execute("INSERT INTO MyTable(Col1,Col2,Col3,Col4) VALUES (?,?,?,?)", *rows)
-
==============================
3.모두 감사합니다. 이 오류는 표의 크기 제한 때문에 발생했습니다. 그것은 열 용량을 col1 varchar (10)에서 col1 varchar (35) 등으로 변경했습니다. 이제는 잘 작동합니다.
모두 감사합니다. 이 오류는 표의 크기 제한 때문에 발생했습니다. 그것은 열 용량을 col1 varchar (10)에서 col1 varchar (35) 등으로 변경했습니다. 이제는 잘 작동합니다.
@beargle : 프로그래밍 방식이 정말 마음에 들었습니다.
from https://stackoverflow.com/questions/21257899/writing-a-csv-file-into-sql-server-database-using-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] NLTK와 scikit-learn에서 텍스트 형태소 분석과 구두점 제거를 결합 (0) | 2018.11.09 |
---|---|
[PYTHON] 컨텍스트 관리자를 사용할 때 개체가 없음이됩니다. (0) | 2018.11.09 |
[PYTHON] Paramiko를 사용하여 한 번에 여러 개의 SSH 연결 만들기 (0) | 2018.11.09 |
[PYTHON] Pandas 데이터 프레임에서 yes / no 열을 1/0으로 변경하는 간단한 방법이 있습니까? (0) | 2018.11.09 |
[PYTHON] SciPy 및 scikit-learn - ValueError : 치수 불일치 (0) | 2018.11.09 |