Hướng dẫn sql to csv python - sql sang csv python

Ở bài viết trước mình đã giới thiệu sơ lược về thư viện Pandas và cấu trúc dữ liệu cơ bản của nó, các bạn có thể tham khảo tại đây. Trong bài viết này mình sẽ giới thiệu sơ lược về các đọc dữ liệu từ CSV, JSON và SQL database.

Đọc dữ liệu từ CSV

Với các tệp CSV, bạn đọc dữ liệu một cách rất đơn giản bằng cách sử dụng hàm

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
9 và được trả về 1 dataframe. Bắt đầu với một bộ dữ liệu demo đơn giản, được gọi là purchases, và mình sẽ tạo ra một file là purchases.csv và dưới đây là dữ liệu thô của nó

name,apples,oranges
June,3,0
Robert,2,3
Lily,0,7
David,1,2
#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df

Output:

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2

CSV không có index giống như DataFrames, vì vậy tất cả những gì chúng ta cần làm chỉ là chỉ định index_col khi đọc:

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv', index_col=0]
print df

Output:

name	apples	oranges
June	3	    0
Robert	2	    3
Lily	0	    7
David	1	    2

Ở đây chúng ta đặt index là cột không. Hàm

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
9 có một vài tham số như:

  • encoding: chỉ định encoding của file đọc vào. Mặc định là utf-8.
  • sep: thay đổi dấu ngăn cách giữa các cột. Mặc định là dấu phẩy [‘,’]
  • header: chỉ định file đọc vào có header[tiêu đề của các cột] hay không. Mặc định là infer.
  • index_col: chỉ định chỉ số cột nào là cột chỉ số[số thứ tự]. Mặc định là None.
  • n_rows: chỉ định số bản ghi sẽ đọc vào. Mặc định là None – đọc toàn bộ.

Bạn có thể tham khảo đầy đủ các tham số tại đây

Đọc dữ liệu từ JSON

Nếu bạn có một tệp JSON - về cơ bản là một

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
1 Python được lưu trữ -oandas có thể đọc nó dễ dàng như sau:

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_json['purchases.json']
print df

Output:

name	apples	oranges
June	3	    0
Robert	2	    3
Lily	0	    7
David	1	    2

Lưu ý lần này index đi kèm với chúng ta một cách chính xác vì sử dụng các index cho phép JSON hoạt động thông qua nesting.

Pandas sẽ cố gắng tìm ra cách tạo DataFrame bằng cách phân tích cấu trúc JSON của bạn và đôi khi điều đó không đúng. Thông thường, bạn sẽ cần đặt đối số

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
2 tùy thuộc vào cấu trúc, vậy nên hãy tham khảo đầy đủ các tham số của
    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
3 tại đây

Đọc dữ liệu từ SQL database

Nếu bạn làm việc với dữ liệu từ cơ sở dữ liệu SQL, trước tiên bạn cần thiết lập kết nối bằng thư viện Python thích hợp, sau đó chuyển truy vấn đến pandas. Ở đây chúng tôi sẽ sử dụng SQLite để chứng minh.

Đầu tiên, chúng ta cần cài đặt pysqlite3, chạy

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
4nếu sử dụng tool pip

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
5 được sử dụng để tạo kết nối tới cơ sở dữ liệu mà sau đó chúng ta có thể sử dụng để tạo DataFrame thông qua truy vấn
    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
6.

Vì vậy, trước tiên chúng ta sẽ tạo kết nối đến tệp cơ sở dữ liệu SQLite:

import sqlite3
con = sqlite3.connect["database.db"]

Lưu ý: Nếu bạn có dữ liệu trong PostgreSQL, MySQL hoặc một SQL server khác, bạn sẽ cần lấy đúng thư viện Python để tạo kết nối. Ví dụ

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
7 là một thư viện thường được sử dụng để tạo kết nối tới PostgreSQL bạn có thể tham khảo tại đây. Hơn nữa, bạn sẽ tạo kết nối đến URI cơ sở dữ liệu thay vì tệp như chúng tôi đã làm ở đây với SQLite.

Trong cơ sở dữ liệu SQLite này, chúng tôi có một bảng gọi là purchases và chỉ mục của chúng tôi nằm trong một cột có tên là "name"

Bằng cách truyền truy vấn

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
6 và connect
    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2
9, chúng ta có thể đọc từ bảng purchases

df = pd.read_sql_query["SELECT * FROM purchases", con]
print df

Output:

    name	apples	oranges
0	June	3	    0
1	Robert	2	    3
2	Lily	0	    7
3	David	1	    2

Giống như với CSV, chúng ta có thể pass

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv', index_col=0]
print df
0, nhưng chúng ta cũng có thể thiết lập một index sau

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
0

Output:

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
1

Thực tế, chúng ta có thể sử dụng

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv', index_col=0]
print df
1 trên bất kỳ DataFrame nào bằng bất kỳ cột nào vào bất kỳ lúc nào. Indexing Series và DataFrames là một nhiệm vụ rất phổ biến, và những cách khác nhau để làm điều đó là đáng nhớ.

Tài liệu tham khảo

Python Pandas Tutorial: A Complete Introduction for Beginners

Tôi có một tệp sql lớn [20 GB] mà tôi muốn chuyển đổi thành csv. Tôi dự định tải tệp vào Stata để phân tích. Tôi có đủ ram để tải toàn bộ tệp [máy tính của tôi có RAM 32 GB]

Vấn đề là: các giải pháp tôi tìm thấy trực tuyến với Python cho đến nay [sqlite3] dường như yêu cầu nhiều RAM hơn hệ thống hiện tại của tôi phải:

  • đọc SQL
  • viết csv

Đây là mã

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
2

Tệp sql chứa khoảng 15 biến có thể là dấu thời gian, chuỗi hoặc giá trị số. Không có gì thực sự ưa thích.

Tôi nghĩ một giải pháp khả thi có thể là đọc sql và ghi tệp csv từng dòng một. Tuy nhiên, tôi không biết làm thế nào để làm điều đó [bằng R hoặc bằng Python]

Bất kỳ trợ giúp thực sự đánh giá cao!

  • python
  • sql
  • r
  • csv
  • export

6 hữu ích 5 bình luận 20k xem chia sẻ 5 bình luận 20k xem chia sẻ

answer

20

Bạn có thể đọc cơ sở dữ liệu SQL theo lô và ghi chúng vào tệp thay vì đọc toàn bộ cơ sở dữ liệu cùng một lúc. Tín dụng cho Cách thêm dữ liệu gấu trúc vào tệp csv hiện có? để biết cách thêm vào tệp CSV hiện có.

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
3

20 hữu ích 4 bình luận chia sẻ 4 bình luận chia sẻ

answer

4

Bạn có thể đọc cơ sở dữ liệu SQL theo lô và ghi chúng vào tệp thay vì đọc toàn bộ cơ sở dữ liệu cùng một lúc. Tín dụng cho Cách thêm dữ liệu gấu trúc vào tệp csv hiện có? để biết cách thêm vào tệp CSV hiện có.

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
4

20 hữu ích 4 bình luận chia sẻ

Sử dụng chương trình dòng lệnh sqlite3 như thế này từ dòng cmd của Windows hoặc trình bao UNIX:

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
5

và nhập các lệnh này tại dấu nhắc sqlite:

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
6

[hoặc đặt chúng vào một tệp có tên

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv', index_col=0]
print df
2, nói và sử dụng
#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv', index_col=0]
print df
3.

4 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ

answer

2

Tải

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv', index_col=0]
print df
4tệp trong cơ sở dữ liệu mysql và xuất nó dưới dạng CSV.

Commans để tải tệp kết xuất mysql trong cơ sở dữ liệu MySQL.

Tạo cơ sở dữ liệu MySQL

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
7

Lệnh xuất bảng MySQL dưới dạng CSV

#Khai báo thư viện pandas và khai báo nó là pd
import pandas as pd
df = pd.read_csv['purchases.csv']
print df
8

2 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Bài Viết Liên Quan

Chủ Đề