Máy chủ sql chèn số lượng lớn python

Tôi có tập lệnh Python nhập dữ liệu Excel, định dạng một vài cột/hàng và lưu kết quả dưới dạng CSV. Sau đó, CSV này được chuyển đến một thư mục máy chủ [thông qua tập lệnh] để tôi có thể chạy truy vấn SQL INSERT hàng loạt để điền nội dung của nó vào Bảng SQL. Tuy nhiên, tập lệnh của tôi sẽ thêm ngày hiện tại vào tên tệp khi lưu CSV. Làm cách nào tôi có thể chỉnh sửa phần CHÈN hàng loạt trong mã của mình để đảm bảo nó ghi lại tên tệp này mỗi khi tập lệnh được chạy, để tôi không phải chỉnh sửa phần SQL theo cách thủ công?

Đây là phần có liên quan trong tập lệnh của tôi [phần SQL có *** cho biết nơi tôi muốn tên mới được tự động ghi lại [e. g. testdata_15092020. csv]]

import os
import pandas as pd
import shutil
import glob
import pyodbc

os.system["cls"]

# ...Multiple formatting steps...

currenttime = pd.to_datetime['today'].strftime['%d%m%Y']
join.to_csv["testdata_" + currenttime + ".csv", index=False]

for CSVfile in glob.iglob[os.path.join['CURRENT WORKING DIRECTORY', "*.csv"]]:
    shutil.copy[CSVfile, 'SQL SERVER FILE DIRECTORY']

# ...Connection to SQL Database section...

cursor.execute["""BULK INSERT testdb.dbo.scriptresults
               FROM '\\\SERVERNAME\\TESTFILES\\***.csv' 
               WITH
               [
                 FIRSTROW = 2,
                 FIELDTERMINATOR = ',',
                 ROWTERMINATOR = '\n'
                 ];"""]
cnxn.commit[]
- stackoverflow. com

ghi bàn. 0

câu trả lời được chấp nhận

Còn cái này thì sao?

file_name = "testdata_" + currenttime + ".csv"

cursor.execute["""BULK INSERT master.dbo.scriptresults
               FROM '\\\SERVERNAME\\TESTFILES\\""" + file_name + """' 
               WITH
               [
                 FIRSTROW = 2,
                 FIELDTERMINATOR = ',',
                 ROWTERMINATOR = '\n'
                 ];"""]

Thêm câu hỏi với thẻ tương tự

Có nhiều cách để nhập tệp CSV vào SQL Server bằng Python. Trong hướng dẫn này, bạn sẽ thấy một kỹ thuật đơn giản để nhập dữ liệu của mình bằng 2 thư viện Python sau

  • Pandas – được sử dụng để nhập tệp CSV vào Python và tạo DataFrame
  • Pyodbc – dùng để kết nối Python với SQL Server

Các bước để nhập tệp CSV vào SQL Server bằng Python

Bước 1. Chuẩn bị tệp CSV

Để bắt đầu, hãy chuẩn bị tệp CSV mà bạn muốn nhập vào SQL Server

Ví dụ: giả sử rằng một tệp CSV đã được chuẩn bị, trong đó

  • Tên tệp CSV là 'sản phẩm'
  • Tệp CSV được lưu trữ theo đường dẫn sau. C. \Users\Ron\Desktop\Test\products. csv

Ngoài ra, tệp CSV chứa dữ liệu sau

product_idproduct_nameprice1Laptop12002Printer2003Tablet3504Keyboard805Monitor400

Bước 2. Nhập tệp CSV vào DataFrame

Bạn có thể sử dụng thư viện Pandas để nhập tệp CSV vào DataFrame

Đây là mã để nhập tệp CSV cho ví dụ của chúng tôi [lưu ý rằng bạn sẽ cần thay đổi đường dẫn để phản ánh vị trí lưu trữ tệp CSV trên máy tính của bạn]

import pandas as pd

data = pd.read_csv [r'C:\Users\Ron\Desktop\Test\products.csv']   
df = pd.DataFrame[data]

print[df]

Đây là cách DataFrame trông như thế nào trong Python

   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

Bước 3. Kết nối Python với máy chủ SQL

Để kết nối Python với máy chủ SQL, bạn sẽ cần

  • Tên máy chủ. Đối với mục đích trình diễn, giả sử rằng tên máy chủ là. RON\SQLEXPRESS
  • Tên cơ sở dữ liệu. Tên cơ sở dữ liệu cho ví dụ của chúng tôi sẽ là. test_database

Đây là mã để kết nối Python với SQL cho ví dụ của chúng tôi

import pyodbc

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

Bạn có thể muốn kiểm tra hướng dẫn sau giải thích các bước đầy đủ để kết nối Python với SQL Server bằng pyodbc

Bước 4. Tạo bảng trong SQL Server bằng Python

Tiếp theo, thêm cú pháp tạo bảng trong SQL Server. Bảng này sẽ được sử dụng để lưu trữ dữ liệu đã nhập từ tệp CSV

Ví dụ của chúng tôi, bạn có thể thêm cú pháp sau để tạo bảng 'sản phẩm'

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

Lưu ý rằng bất cứ khi nào bạn chạy mã để tạo bảng. Bạn chỉ nên sử dụng đoạn mã đó một lần. Nếu không, bạn sẽ gặp lỗi bên dưới.

Lỗi lập trình. ['42S01′, “[42S01] [Microsoft][ODBC SQL Server Driver][SQL Server] Đã có một đối tượng có tên là 'sản phẩm' trong cơ sở dữ liệu. [2714] [SQLExecDirectW]”]

Bước 5. Chèn dữ liệu DataFrame vào bảng

Đây là cú pháp để chèn dữ liệu DataFrame [từ bước 2] vào bảng sản phẩm

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[]

Và đây là toàn bộ mã để nhập tệp CSV vào SQL Server bằng Python

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[]

Chạy mã bằng Python [sau khi thực hiện điều chỉnh đường dẫn nơi tệp CSV của bạn được lưu trữ, cũng như thực hiện thay đổi đối với thông tin kết nối cơ sở dữ liệu của bạn]

Chèn số lượng lớn hoạt động như thế nào trong SQL Server?

BALK INSERT tải dữ liệu từ tệp dữ liệu vào bảng . Chức năng này tương tự như chức năng được cung cấp bởi tùy chọn in của lệnh bcp; . Để biết mô tả về cú pháp BULK INSERT, hãy xem BULK INSERT [Transact-SQL].

Làm cách nào tôi có thể làm cho truy vấn chèn SQL Server nhanh hơn?

[SQL Server] Cách tăng tốc quá trình chèn .
KHAI BÁO @ID SỐ [10],
@NAME SỐ [10],
@INFO VARCHAR[30]
BẮT ĐẦU
EXEC [ 'KHAI BÁO Cur FOR ' + @cursor]
MỞ Cur
TÌM TIẾP THEO TỪ Curiosity VÀO @ID, @NAME, @INFO
KHI @@FETCH_STATUS = 0

Chèn số lượng lớn là gì?

Chèn hàng loạt là quy trình hoặc phương pháp được cung cấp bởi hệ thống quản lý cơ sở dữ liệu để tải nhiều hàng dữ liệu vào bảng cơ sở dữ liệu . Chèn số lượng lớn có thể đề cập đến. Câu lệnh Transact-SQL BULK INSERT. Câu lệnh PL/SQL BULK COLLECT và FORALL. MySQL LOAD DATA INFILE tuyên bố.

Tại sao chèn số lượng lớn nhanh hơn chèn?

Trong trường hợp CHÈN SỐ LƯỢNG LỚN, chỉ phân bổ phạm vi được ghi lại thay vì dữ liệu thực tế được chèn . Điều này sẽ cung cấp hiệu suất tốt hơn nhiều so với INSERT. Ưu điểm thực tế là giảm lượng dữ liệu được ghi vào nhật ký giao dịch.

Chủ Đề