Bạn có thể truy vấn tệp csv trong python không?

Như bạn đã biết, Dữ liệu là phần cốt lõi của bất kỳ giải pháp kinh doanh nào hiện nay và việc tạo ra thông tin chi tiết từ dữ liệu đó là kết quả cuối cùng của mọi giải pháp kinh doanh. Có nhiều kho lưu trữ để lưu trữ dữ liệu thô/đã xử lý và kho lưu trữ phổ biến nhất là lưu trữ dữ liệu vào tệp CSV

Các ngôn ngữ lập trình ngày nay có các gói tích hợp giúp đọc/ghi các tệp CSV. Khác với ngôn ngữ lập trình, cơ sở dữ liệu cũng có hỗ trợ nhập dữ liệu CSV vào bảng và sau đó truy vấn dữ liệu đó bằng SQL

Vì vậy, khi bạn muốn thực hiện một số truy vấn SQL trên tệp CSV để hiểu rõ hơn về dữ liệu, trước tiên bạn phải nhập dữ liệu CSV vào bảng cơ sở dữ liệu, sau đó bạn có thể thực hiện các truy vấn SQL trên dữ liệu đó. Nên quá trình này có vẻ hơi lâu

Điều này khiến tâm trí tôi tìm kiếm một cách đơn giản hơn và nhanh hơn để thực hiện SQL trên các tệp CSV. Và giải pháp mà tôi tìm thấy đã thực sự gây ấn tượng với tôi và làm cho quá trình này trở nên đơn giản và nhanh chóng hơn rất nhiều

Giải pháp là DuckDB

DuckDB là một hệ thống quản lý cơ sở dữ liệu SQL OLAP đang được xử lý

Một số tính năng cốt lõi chính của DuckDB là

  • Đang xử lý, không có máy chủ
  • API cho Python/R/Java/C/C++ và các API khác
  • Hỗ trợ SQL mở rộng
  • Truy vấn Parquet và CSV trực tiếp
  • Xử lý truy vấn song song
  • Mã nguồn mở & miễn phí

Tôi nghĩ tốt nhất là đi sâu vào viết mã và xem DuckDB có thể giúp chúng tôi một cách đơn giản và nhanh chóng như thế nào để thực hiện SQL trên tệp CSV mà không cần bất kỳ quy trình nhập dữ liệu nào

Tôi sẽ sử dụng Python trong ví dụ mã hóa. Để cài đặt DuckDB cho python

pip install duckdb

Hãy xem tệp CSV mẫu

 

Ví dụ trên sử dụng tệp CSV aapl. csv có thể tải xuống từ đây.  

Chạy chương trình này với aapl. csv trong cùng thư mục

  • Hãy để chúng tôi cố gắng hiểu đoạn mã này.  
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
8
  • Ở đây, trước tiên chúng tôi mở tệp CSV ở chế độ ĐỌC. Đối tượng tệp được đặt tên là csvfile. Đối tượng tệp được chuyển đổi thành csv. đối tượng người đọc. Chúng tôi lưu csv. đối tượng người đọc là csvreader
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
0
  • csvreader là một đối tượng có thể lặp lại. Vì thế,. phương thức next[] trả về hàng hiện tại và chuyển iterator sang hàng tiếp theo. Vì hàng đầu tiên của tệp csv của chúng tôi chứa các tiêu đề [hoặc tên trường], nên chúng tôi lưu chúng trong một danh sách có tên là các trường
data = con.fetchdf[]
0
  • Bây giờ, chúng tôi lặp qua các hàng còn lại bằng vòng lặp for. Mỗi hàng được thêm vào một danh sách gọi là hàng. Nếu bạn cố gắng in từng hàng, người ta có thể thấy rằng một hàng chẳng là gì ngoài một danh sách chứa tất cả các giá trị trường
import duckdb
7
  • csvreader. line_num chẳng là gì ngoài một bộ đếm trả về số hàng đã được lặp lại

ví dụ 2. Ghi vào tệp CSV

con trăn




con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
004

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
01
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
02

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
007

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
08
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
010
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
011
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
013
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
017
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
018

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
019

data = con.fetchdf[]
01
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
022
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
023
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
025
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
029
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010______4033
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
025
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
039
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
010______4043
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
045
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
049
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010______4053
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
055
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
057
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
059
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010______4063
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
065
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
067
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
069
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
010______4073
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
075
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
039
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
080

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
081

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
04
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
084

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
085

data = con.fetchdf[]
05
data = con.fetchdf[]
06____507
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
089
data = con.fetchdf[]
09

import duckdb
70
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
092

import duckdb
70
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
094
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
096

import duckdb
70

import duckdb
70
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
099

import duckdb
70
data = con.fetchdf[]
001

import duckdb
70

import duckdb
70____5004

import duckdb
70
data = con.fetchdf[]
006

Hãy để chúng tôi cố gắng hiểu đoạn mã trên.  

  • các trường và hàng đã được xác định. các trường là một danh sách chứa tất cả các tên trường. các hàng là một danh sách các danh sách. Mỗi hàng là một danh sách chứa các giá trị trường của hàng đó
import duckdb

con = duckdb.connect[database=":memory:", read_only=False]

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]

data = con.fetchdf[]
2
  • Ở đây, trước tiên chúng tôi mở tệp CSV ở chế độ VIẾT. Đối tượng tệp được đặt tên là csvfile. Đối tượng tệp được chuyển đổi thành csv. đối tượng nhà văn. Chúng tôi lưu csv. đối tượng nhà văn là csvwriter
csvwriter.writerow[fields]
  • Bây giờ chúng tôi sử dụng phương thức writerow để viết hàng đầu tiên không có gì ngoài tên trường.  
________số 8
  • Chúng tôi sử dụng phương thức writerows để viết nhiều hàng cùng một lúc

ví dụ 3. Viết từ điển vào tệp CSV

con trăn




con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
004

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
01
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
02

 

data = con.fetchdf[]
010

data = con.fetchdf[]
011
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
data = con.fetchdf[]
013
data = con.fetchdf[]
014
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
025
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
029
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012

data = con.fetchdf[]
022
data = con.fetchdf[]
023
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
023
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
027
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
data = con.fetchdf[]
030

csvwriter.writerow[fields]
1____5032
data = con.fetchdf[]
014
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
025
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
039
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012

data = con.fetchdf[]
041
data = con.fetchdf[]
023
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
033
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
027
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
data = con.fetchdf[]
030

csvwriter.writerow[fields]
1
data = con.fetchdf[]
032
data = con.fetchdf[]
014
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
045
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
049
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012

data = con.fetchdf[]
041
data = con.fetchdf[]
023
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
043
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
027
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
data = con.fetchdf[]
030

csvwriter.writerow[fields]
1____5032
data = con.fetchdf[]
014
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
055
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
059
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012

data = con.fetchdf[]
041
data = con.fetchdf[]
023
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
053
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
027
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
057
data = con.fetchdf[]
030

csvwriter.writerow[fields]
1
data = con.fetchdf[]
032
data = con.fetchdf[]
014
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
065
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
069
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012

data = con.fetchdf[]
041
data = con.fetchdf[]
023
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
063
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012____5027
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
067
data = con.fetchdf[]
030

csvwriter.writerow[fields]
1____5032
data = con.fetchdf[]
014
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
075
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
039
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012

data = con.fetchdf[]
041
data = con.fetchdf[]
023
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
073
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012____5027
data = con.fetchdf[]
015
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
027
import duckdb
725

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
007

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
08
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
010
data = con.fetchdf[]
023
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
014
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
027
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
data = con.fetchdf[]
018
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
018

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
081

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
04
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
084

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
085

data = con.fetchdf[]
05
data = con.fetchdf[]
06____507
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
089
data = con.fetchdf[]
09

import duckdb
70
import duckdb
749

import duckdb
70
import duckdb
751
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
import duckdb
753
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
import duckdb
755

import duckdb
70

import duckdb
70
import duckdb
758

import duckdb
70
import duckdb
760

import duckdb
70

import duckdb
70
import duckdb
763

import duckdb
70
import duckdb
765

Trong ví dụ này, chúng tôi viết từ điển mydict vào tệp CSV.   

import duckdb

con = duckdb.connect[database=":memory:", read_only=False]

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]

data = con.fetchdf[]
5
  • Tại đây, đối tượng tệp [csvfile] được chuyển đổi thành đối tượng DictWriter. Ở đây, chúng tôi chỉ định tên trường làm đối số.  
import duckdb
4
  • phương thức writeheader chỉ cần ghi hàng đầu tiên của tệp csv của bạn bằng tên trường được chỉ định trước
con = duckdb.connect[database="my_database.db", read_only=False]
7
  • phương thức writerows chỉ ghi tất cả các hàng nhưng trong mỗi hàng, nó chỉ ghi các giá trị [không phải khóa]

Vì vậy, cuối cùng, tệp CSV của chúng tôi trông như thế này.  

tệp csv

Hãy xem xét rằng tệp CSV trông như thế này ở dạng văn bản thuần túy.  

hồ sơ đại học

  • Chúng tôi nhận thấy rằng dấu phân cách không phải là dấu phẩy mà là dấu chấm phẩy. Ngoài ra, các hàng được phân tách bằng hai dòng mới thay vì một. Trong những trường hợp như vậy, chúng ta có thể chỉ định dấu phân cách và dấu kết thúc dòng

Ví dụ 4. Cách lưu trữ email trong tệp CSV?

Python3




con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
004

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
01
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
02

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
007

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
08
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
010
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
011
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
import duckdb
775
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
018

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
019

data = con.fetchdf[]
01
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
022
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
023
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
012
import duckdb
783
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010____4033____4012
import duckdb
789
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010____4043____4012
import duckdb
795
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010____4053____4012
import duckdb

con = duckdb.connect[database=":memory:", read_only=False]

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]

data = con.fetchdf[]
201
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010____4063____4012
import duckdb

con = duckdb.connect[database=":memory:", read_only=False]

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]

data = con.fetchdf[]
207
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
030

csvwriter.writerow[fields]
1____4010____4073____4012
import duckdb

con = duckdb.connect[database=":memory:", read_only=False]

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]

data = con.fetchdf[]
213
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
080

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
081

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
04
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
import duckdb

con = duckdb.connect[database=":memory:", read_only=False]

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]

data = con.fetchdf[]
218

 

con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
085

data = con.fetchdf[]
05
data = con.fetchdf[]
06____507
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
089
data = con.fetchdf[]
09

import duckdb
70
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
092

import duckdb
70
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
094
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
05
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
096

import duckdb
70

import duckdb
70
con.execute["SELECT * FROM read_csv_auto['users.csv', HEADER=TRUE, ALL_VARCHAR=1] WHERE department = 'Development' "]
099

import duckdb
70
data = con.fetchdf[]
001

import duckdb
70

import duckdb
70____5004

import duckdb
70
data = con.fetchdf[]
006

đầu ra

Email trong csv

Giải trình

Ở đây chúng tôi đang nhập mô-đun csv và sau đó chỉ cần sử dụng cùng một khái niệm lưu trữ email ở dạng thực thể được phân tách bằng dấu phẩy cùng với tên của chúng. Chúng tôi đang mở hàm open[] của tệp và chỉ định rằng chúng tôi cần tệp đó dưới dạng tệp csv, sau đó ghi từng cột vào tệp csv bằng cách sử dụng đối tượng nhà văn

Chủ Đề