it-swarm-vi.tech

Truy vấn tệp CSV

Có ai biết một công cụ đơn giản sẽ mở ra một tệp CSV và cho phép bạn thực hiện các truy vấn SQLesque cơ bản không? Giống như một công cụ đồ họa sắp xếp, một công cụ dễ sử dụng.

Tôi biết tôi có thể viết một tập lệnh nhỏ để thực hiện nhập CSV vào cơ sở dữ liệu SQLite, nhưng vì tôi tưởng tượng người khác nghĩ về điều này trước tôi, tôi chỉ muốn hỏi xem có tồn tại không. Điều khiến cho câu hỏi này là tôi cảm thấy thất vọng với khả năng lọc hạn chế của Excel.

Có lẽ một số công cụ thao tác trực quan hóa dữ liệu khác sẽ cung cấp chức năng tương tự.

Miễn phí hoặc OSS được ưa thích, nhưng tôi sẵn sàng cho bất kỳ đề xuất nào.

CHỈNH SỬA:

Tôi thực sự thích một số hướng dẫn rõ ràng về cách thực hiện bên dưới thay vì chỉ "tạo trang tính của bạn thành ODBC entry" hoặc "viết chương trình bằng cách sử dụng ODBC tệp" hoặc thêm ý tưởng về ứng dụng để sử dụng. Lưu ý: Tôi không thể sử dụng MS Access.

Một EDIT khác:

Tôi vẫn đang mở cho các giải pháp sử dụng SQLite. Nền tảng của tôi là một máy tính xách tay Win2k bán cổ, có P4 trên đó. Nó khá chậm, vì vậy một giải pháp ánh sáng tài nguyên là lý tưởng và có khả năng sẽ giành chiến thắng.

30
J. Polfer

Bạn đã thử LogParser ?

Trình phân tích cú pháp nhật ký là một công cụ mạnh mẽ, linh hoạt, cung cấp quyền truy cập truy vấn chung vào dữ liệu dựa trên văn bản như tệp nhật ký, tệp XML và tệp CSV, cũng như các nguồn dữ liệu chính trên hệ điều hành Windows® như Nhật ký sự kiện, Sổ đăng ký, hệ thống tệp và Active Directory®. Bạn nói với Log Parser những thông tin bạn cần và cách bạn muốn nó được xử lý. Kết quả truy vấn của bạn có thể được định dạng tùy chỉnh trong đầu ra dựa trên văn bản hoặc chúng có thể được duy trì cho các mục tiêu đặc biệt hơn như SQL, SYSLOG hoặc biểu đồ.

Hầu hết các phần mềm được thiết kế để thực hiện một số lượng hạn chế các nhiệm vụ cụ thể. Log Parser thì khác ... số cách nó có thể được sử dụng chỉ bị giới hạn bởi nhu cầu và trí tưởng tượng của người dùng. Thế giới là cơ sở dữ liệu của bạn với Log Parser.

A hướng dẫn (và a một số khác ) về việc sử dụng ngôn ngữ truy vấn giống như SQL với các tệp CSV tôi được tìm thấy bằng cách sử dụng google .

Ví dụ truy vấn:

logparser -i:CSV "SELECT TOP 10 Time, Count INTO c:\logparser\test\Chart.GIF 
FROM c:\logparser\test\log.csv ORDER by Time DESC" -charttype:bar3d
13
svandragt

Tôi nghĩ Cơ sở dữ liệu OpenOffice.org có thể làm những gì bạn muốn. Nó hoạt động như thế này.

  1. Bắt đầu Open Office.org Database, nó hiển thị " Trình hướng dẫn cơ sở dữ liệu "

  2. Chọn " Kết nối với cơ sở dữ liệu hiện có: Văn bản "

    enter image description here

  3. Chỉ định đường dẫn đến tệp văn bản cũng như các chi tiết như ký tự phân cách, v.v.

    enter image description here

  4. Tạo và thực hiện Truy vấn

    enter image description here

Nếu bạn đã từng làm việc với Microsoft Access, bạn sẽ thấy GUI quen thuộc.


Nếu bạn có thể làm mà không cần GUI thì luôn có các lệnh UNIX truyền thống. Tôi sử dụng chúng rất nhiều để thực hiện các truy vấn đơn giản đối với các tệp CSV (nhỏ). Đây là cách nó làm việc:

clause      operation   command
-------------------------------
from             join     `join`
where     restriction     `grep`
order by           --     `sort`
group by  restriction      `awk`
having    restriction     `grep`
select     projection      `cut`
distinct  restriction     `uniq`
limit     restriction     `head`
offset    restriction     `tail`
34
Ludwig Weinzierl

Bạn có thể sử dụng ODBC để truy vấn tệp văn bản:

Truy cập tệp văn bản bằng ODBC Nhà cung cấp dữ liệ

Lưu ý rằng bạn không cần MS Access để làm việc này, hướng dẫn trong liên kết trên chỉ sử dụng MS Access để tạo tệp văn bản, nhưng như bạn đã có tệp văn bản, cuộn xuống giữa chừng và bắt đầu hướng dẫn nơi bạn thấy tiêu đề Truy cập tệp văn bản .

Cập nhật : Tôi đã tự tạo DSN trên tệp .csv để có thể tạo hướng dẫn từng bước này ... ở đây có:

  • Hãy chắc chắn rằng tệp .csv của bạn nằm trong thư mục riêng của nó mà không có gì khác.
  • Mở "Quản trị viên nguồn dữ liệu ODBC" (bảng điều khiển khởi động - công cụ quản trị - Nguồn dữ liệu (ODBC)).
  • Chuyển đến tab Tệp DSN và nhấp vào "Thêm ...".
  • Chọn "Trình điều khiển văn bản của Microsoft (* .txt, * .csv) từ danh sách và nhấp vào" Tiếp theo> ".
  • Đặt tên cho nguồn dữ liệu tệp của bạn (ví dụ: "kiểm tra") và nhấp vào "Tiếp theo>".
  • Nhấp vào "Kết thúc" (Sau đó, một hộp thoại sẽ xuất hiện trong đó các trường "Tên nguồn dữ liệu" và "Mô tả" thực sự bị mờ đi. Điều này là bình thường. Không phải lo lắng.
  • Bỏ chọn hộp kiểm "Sử dụng thư mục hiện tại". Nút "Chọn thư mục" sẽ được bật.
  • Nhấp vào nút "Chọn thư mục" và cagivate vào thư mục mà bạn đã đặt tệp .csv của mình trong bước đầu tiên.
  • Nhấp vào nút "Tùy chọn >>".
  • Nhấp vào nút "Xác định định dạng ...".
  • Trong danh sách "Bảng" bên trái, chọn tệp .csv của bạn và nhấp vào nút "Đoán". (Điều này sẽ phân tích tệp csv của bạn và tạo trường thích hợp cho từng cột trong tệp .csv của bạn.)
  • Đi qua các cột được tạo (F1, F2, ...) trong danh sách bên phải, đặt cho chúng các tên có ý nghĩa và đặt loại dữ liệu phù hợp (đôi khi việc đoán không phải lúc nào cũng đúng).
  • Khi mọi thứ đã được thiết lập đúng, nhấp vào "OK" (2 lần).

Tại thời điểm này, bạn nên có một tệp DSN mà bạn có thể truy cập tệp .csv của mình thông qua ODBC. Nếu bạn kiểm tra thư mục của mình nơi đặt tệp .csv, bạn sẽ thấy tệp lược đồ chứa tệp cấu hình bạn vừa tạo. Khi bạn có nhiều tệp .csv, mỗi tệp tương ứng với một bảng và mỗi bảng sẽ có một tên tệp [. Csv] trong tệp lược đồ trong đó các cột khác nhau đã xác định ... Bạn cũng có thể tạo/thay đổi tệp lược đồ đó trực tiếp trong trình soạn thảo văn bản thay vì sử dụng GUI được mô tả ở trên.

Đối với câu hỏi thêm của bạn "cách kết nối với nhà cung cấp ODBC này bằng công cụ truy vấn":
[.__.] Tôi có một công cụ mà tôi đã tự viết từ lâu và không đủ điều kiện để xuất bản. Nhưng một tìm kiếm nhanh trên Google đã đưa ra odbc-view , một công cụ phần mềm miễn phí thực hiện những gì bạn muốn.
[.__.] Tôi đã tải xuống và cài đặt công cụ.
[.__.] Sau khi khởi động công cụ:

  • Nhấp vào "Nguồn dữ liệu ...".
  • Chọn Nguồn dữ liệu tệp mà bạn đã tạo trước đó (ví dụ: "kiểm tra").
  • Trong ngăn truy vấn, gõ "select * from [ tên tệp . Csv]".
  • Nhấp vào "Thực thi".

Bây giờ bạn sẽ thấy nội dung của tệp .csv của bạn ở khung bên dưới.
[.__.] Hy vọng điều này sẽ giúp ... Hãy cho tôi biết bạn làm như thế nào hoặc nếu bạn cần hỗ trợ thêm.

13
fretje

Tôi thích sử dụng R để truy cập các tệp csv một cách nhanh chóng. Mặc dù ngôn ngữ không trực tiếp SQL, bạn có thể thực hiện tất cả những điều đó bằng các lệnh đơn giản trong R. R cũng cung cấp cho bạn khả năng tạo các biểu đồ Nice và nhiều sức mạnh khác.

8
Christian

Bạn luôn có thể đọc tệp vào Excel và sử dụng Excel làm nguồn dữ liệu của mình thông qua ODBC và chạy truy vấn đối với tệp đó.

5
m.floryan

Bạn có thể xem công cụ miễn phí q - Text as a Database , cho phép thực thi SQL trực tiếp trên các tệp csv, bao gồm các phép nối, nhóm và bất kỳ cấu trúc SQL nào khác. Cũng bao gồm tự động phát hiện tên cột và loại cột.

Đây là một công cụ dòng lệnh phù hợp với cách vận hành của Linux (ví dụ: Đường ống từ stdin nếu cần, các cờ đặc biệt để tùy chỉnh hành vi, v.v.).

Sử dụng sqlite phía sau hậu trường, vì vậy trọng lượng rất nhẹ và dễ sử dụng.

Tiết lộ đầy đủ - Đó là công cụ nguồn mở của riêng tôi. Hi vọng bạn tìm được thứ hữu dụng

Harel Ben-Attia

3
Harel Ben Attia

Tôi tìm thấy một ứng dụng nhỏ, không có đồ họa thực hiện việc này: csvsql .

Tài liệu là ở đây .

3
Stefan Thyberg

Tôi thấy rằng cách đơn giản nhất để đạt được điều này là chỉ sử dụng chức năng nhập CSV tích hợp của SQLite:

  1. sqlite3 mydatabase.sqlite
  2. sqlite> .mode csv
  3. sqlite> .import mydata.csv <tablename>

Bây giờ bạn có một cơ sở dữ liệu làm việc mà bạn có thể truy vấn theo cách bạn muốn. Tôi cũng thấy hiệu suất của các sản phẩm trên là tốt, tôi chỉ nhập ba triệu hàng trong vòng 10 - 15 giây.

3

Tôi đã viết một chương trình dòng lệnh để thực thi SQL tùy ý trên các tệp csv, bao gồm các phép nối nhiều tệp, được gọi là gcsvsql. Bạn có thể đọc nó ở đây:

http://bayesianconspiracy.blogspot.com/2010/03/gcsvsql.html

Có một dự án Google Code cho nó ở đây: http://code.google.com.vn/p/gcsvsql/

Nó được viết bằng Java/Groovy và sẽ chạy bất cứ nơi nào có sẵn Java.

Chỉnh sửa: Dự án hoạt động chuyển sang github. https://github.com/jdurbin/durbinlib

2
James Durbin

Một công cụ mà tôi thấy rằng, tôi nghĩ, có thể làm cho việc này dễ dàng hơn trong tương lai là Resolver One .

Đó là một bảng tính tạo mã Python có thể dễ dàng sửa đổi. Đối với những người là nhà phát triển và đôi khi cần phải "từ chức" để giải quyết các vấn đề trong bảng tính, đây có vẻ như là một cách trực quan để giải quyết các vấn đề về bảng tính bằng ngôn ngữ mà họ quen thuộc.

Và nó cho tôi một cái cớ để sử dụng Python. Python làm tôi hạnh phúc.

2
J. Polfer

Trình điều khiển JDBC H2 cung cấp chức năng csvread rất hữu ích, cho phép bạn thực hiện những việc như sau:

select * from csvread(test1.csv) test1 
inner join csvread(test2.csv2) test2
on test1.id = test2.foreignkey

Có nhiều cách khác nhau để sử dụng trình điều khiển này mà không cần phải đi sâu vào viết mã để sử dụng nó.

Cá nhân, tôi thích Squirrel SQL Client cung cấp cho bạn một GUI đẹp để chạy các truy vấn. Để sử dụng tất cả những gì bạn cần làm là trỏ đường dẫn trình điều khiển H2 In-Memory đã liệt kê vào trình điều khiển H2 mà bạn đã tải xuống. Khi bạn đã thiết lập một bí danh phù hợp bằng trình điều khiển, bạn có thể chạy bất kỳ SQL ngẫu nhiên nào bạn muốn. Kết quả được hiển thị trong một bảng Nice và tất cả các loại tính năng khác để nhập, xuất, v.v.

Ngoài ra, bạn có thể sử dụng Groovy để viết một tập lệnh nhanh để tải và sử dụng trình điều khiển khi cần thiết. Xem ví dụ blogpost này để tìm hiểu làm thế nào.

Dường như ai đó đã mở rộng tập lệnh Groovy ở trên và biến nó thành một công cụ dòng lệnh Nice để chạy các truy vấn, xem gcsvsql. Với điều này, bạn có thể chạy các lệnh như sau:

gcsvsql "select * from people.csv where age > 40"
2
lstg

Bạn có thể muốn thử công cụ Q . Nó rất nhẹ, chỉ yêu cầu Python 2.5 hoặc mới hơn.

1
agrrd

Hai tùy chọn khác cho tác vụ này: querycsvfsql . Querycsv là Python và sử dụng sqlite3. Fsql là Perl và sử dụng DBD :: CSV .

1
Nelson

bạn có thể sử dụng WHS. Ví dụ: tôi có 4 tệp trong thư mục 'C:\Users\user837\Desktop\t4': 1.txt

id;sex_ref;sale
1;1;10
2;2;30
3;1;20

2.txt

sex_id;name
1;male
2;female

lược đồ.ini

[1.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,
[2.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,

và Hello.js

WScript.Echo("Hello World!");
var cn = new ActiveXObject("ADODB.Connection");
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\Users\\user837\\Desktop\\t4\";Extended Properties=\"text;HDR=NO;FMT=Delimited\"");

var rs = cn.Execute("select * from 1.txt as t1 left join 2.txt as t2 on t1.sex_ref = t2.sex_id");

while (!rs.EOF) 
{
    WScript.Echo(           rs.Fields("id").Value
                  + "###" + rs.Fields("sex_ref").Value
                  + "###" + rs.Fields("name").Value
                );
    rs.moveNext();
}

Bây giờ chỉ cần nhấp đúp chuột vào Hello.js và bạn sẽ thấy sql constlt theo từng dòng. Xem tài liệu WHS để xem tất cả các kết quả truy vấn.

0
Oleg

Có một plugin Notepad ++ CsvQuery để chạy các truy vấn sql trên các tệp csv được mở trong npp. https://github.com/jokingst/CsvQuery

0
Greck

Mặc dù không miễn phí, chương trình tốt nhất tôi đã tìm thấy cho việc này là Truy vấn tệp . Không giống như các giải pháp khác dựa trên dòng lệnh hoặc yêu cầu nhập/thiết lập tệp trước khi truy cập, Truy vấn tệp cho phép bạn mở tệp (ngay cả GB nhập vào như trình soạn thảo văn bản thông thường và sẽ tự động phân tích bố cục cho bạn, và cho phép bạn thực hiện hầu hết tất cả các truy vấn của mình từ các hộp thoại đơn giản.

Nó hơi tốn kém, nhưng nếu bạn chỉ cần làm một lần, bạn luôn có thể sử dụng bản dùng thử 30 ngày miễn phí. Họ cũng có tuyệt vời hướng dẫn và thậm chí video để giúp bạn bắt đầu.

0
Jeffrey Harmon