পিএইথন/এসএসএল ফ্ল্যাটফাইলে এসকিউএল (কোন এসকিউএইচটি নয়)

এ পটভূমি:

SQLite ডাটাবেসের মধ্যে লোড করা ডেটাগুলির মধ্যে SQL অপারেশন করার জন্য মহান, কিন্তু কাজটি আমার লাইনের মধ্যে অনেকবার আমি নির্বাচন করতে, যোগদান করে এবং যেখানে ডাটাবেসের মধ্যে লোড করা না এমন ফাইলগুলির বিবৃতি করা এবং অগত্যা সময় করার প্রয়োজন হয় না একটি ডাটাবেস মধ্যে লোড হচ্ছে/আরম্ভ। এছাড়াও, SQLite এর র্যান্ডম অ্যাক্সেস বৈশিষ্ট্যাবলী বেশিরভাগ অপারেশন পরিচালনা করে যা প্রতিটি সারিতে একটি ডাটাবেসে ধীর গতিতে সঞ্চালিত হয়।

প্রশ্ন:

এসকিউএল ধরন কমান্ড/fxns (বিশেষত python/bash) এর একটি স্যুট রয়েছে যেটি sqlite এর প্রয়োজন হয় না এবং শুধুমাত্র কাঁচা ট্যাবে স্থান ফাইলগুলিতে কাজ করে? উদাহরণস্বরূপ, সারি নির্বাচন করার জন্য টেবিল ব্যবহার করার পরিবর্তে, শুধুমাত্র কলাম সংখ্যা ব্যবহার করুন।

উদাহরণ

select col1,col2,col3 from fileName.tsv where col1[int] < 3

বিঃদ্রঃ: আমি এই অনেক awk, কাটা, bash- যোগদান, ইত্যাদি সঙ্গে সম্পন্ন করা যেতে পারে বুঝতে পারি; আরো কিছু SQLesque আছে যদি আমি আশ্চর্য ছিল?

4
আমি পাইথনের বিষয়ে নিশ্চিত নই, কিন্তু যদি আপনি ডার্ক সাইড এ আমাদের সাথে যোগ দিতে চান (আমরা কুকি!! পি), আপনি পার্ল মডিউলটি ব্যবহার করতে পারেন DBD :: CSV ( search.cpan.org/~hmbrand/DBD-CSV-0.33/ লিব/ডিবিডি/সিসিএস .pm )।
যোগ লেখক user554546, উৎস
আপনাকে স্বাগতম. :)
যোগ লেখক user554546, উৎস
@ জ্যাকম্যান কখনো না! :) হ্যাঁ DBD :: CSV ভাল দেখায়, আমি আমার Perl সহকর্মী এটা দেখিয়েছেন যাতে তিনি এটি ব্যবহার করতে পারেন। টিপ জন্য ধন্যবাদ.
যোগ লেখক sequenceGeek, উৎস

3 উত্তর

আপনি csv মডিউল এবং তালিকা সংজ্ঞার মাধ্যমে একসাথে কিছু হ্যাক করতে পারেন :

import csv

reader = csv.reader(open('data.csv', 'r'))
rows = [row for row in reader]

# select * from data where first column < 4
# this won't actually work as-is! see the edit below
[row for row in rows if row[0] < 4]

# select * from data where second column >= third column
[row for row in rows if row[1] >= row[2]]

# select columns 1 and 3 from data where first column is "mykey"
[[row[0], row[2]] for row in rows if row[0] == "mykey"]

আপনি হয়তো Python এর ক্রিয়ামূলক প্রোগ্রামিং সরঞ্জামগুলির সাথে আরও কিছু চিত্তাকর্ষক জিনিস করতে পারেন , যদিও আপনি ইতিমধ্যে FP সাথে পরিচিত না, এটি সম্ভবত একটি বিষয় খুব বড় জন্য শুধু এই জন্য শিখতে ;-)


Edit: A couple more tips:

  • If you’re only going to perform one “query” per script, you can cut out the intermediate storage of the data (rows in my example):

    import csv
    reader = csv.reader(open('data.csv', 'r'))
    result = [row for row in reader if row[0] == "banana"]
    
  • The csv reader generates all of its output as text, so if you want to treat one column as e.g. an integer you’ll have to do that yourself. For example, if your second and third columns are integers,

    import csv
    reader = csv.reader(open('data.csv', 'r'))
    rows = [[row[0], int(row[1]), int(row[2])] for row in reader]
    # perform a "select" on rows now
    

    (This means that my first example above won’t actually work as-is.) If all of your columns are integers then you can invoke the functional map function:

    import csv
    reader = csv.reader(open('data.csv', 'r'))
    rows = [map(int, row) for row in reader]
    
2
যোগ

Googling Python DBD :: CSV এর সমতুল্য পরে, আমি KirbyBase পেয়েছি। এটি দেখায় যে এটি বিলটি মাপসই হবে

যেহেতু আমি সাধারণত পাইথন ব্যবহার করি না, তবে আমি এটি চেষ্টা করিনি।

Edited to add: Okay, after taking a glance at the documentation, the query commands aren't exactly SQL, but they're a lot more SQLesque than using awk.

1
যোগ

আমি দৃঢ়ভাবে মাইক্রোসফটের লগ পার্সার 2.2 সুপারিশ করবো ... তবে আমি মনে করি আপনি লিনাক্স ব্যবহার করছেন। সুন্দর নিশ্চিত যে কাজ করবে না কিন্তু লিনাক্স ব্যবহার না করে আমি এখানে লিঙ্ক রাখব।

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24659 http://www.codinghorror.com/blog/2005/08/microsoft-logparser.html

0
যোগ