2010-11-24 10 views
5

यह एसएसवी या एक्सएलएस प्रारूप में संभव निर्यात sqlite3 तालिका है? मैं अजगर 2.7 और वर्ग 3 का उपयोग कर रहा हूँ।सीएसवी या समान के लिए यह संभव निर्यात तालिका sqlite3 तालिका संभव है?

+0

इस पोस्ट को देखने के तरीके से (पाइथन से आयात के बारे में है, लेकिन यह ussefull हो सकता है http://stackoverflow.com/questions/2887878/importing-a-csv-file-into-a-sqlite3-डेटा-table -using-python – cristian

उत्तर

9

मैं इस बहुत ही बुनियादी स्क्रिप्ट खटखटाया एक साथ the docs से एक थोड़ा संशोधित उदाहरण वर्ग का उपयोग; यह बस एक पूरी तालिका को एक CSV फ़ाइल में निर्यात करता है:

import sqlite3 
import csv, codecs, cStringIO 

class UnicodeWriter: 
    """ 
    A CSV writer which will write rows to CSV file "f", 
    which is encoded in the given encoding. 
    """ 

    def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): 
     # Redirect output to a queue 
     self.queue = cStringIO.StringIO() 
     self.writer = csv.writer(self.queue, dialect=dialect, **kwds) 
     self.stream = f 
     self.encoder = codecs.getincrementalencoder(encoding)() 

    def writerow(self, row): 
     self.writer.writerow([unicode(s).encode("utf-8") for s in row]) 
     # Fetch UTF-8 output from the queue ... 
     data = self.queue.getvalue() 
     data = data.decode("utf-8") 
     # ... and reencode it into the target encoding 
     data = self.encoder.encode(data) 
     # write to the target stream 
     self.stream.write(data) 
     # empty queue 
     self.queue.truncate(0) 

    def writerows(self, rows): 
     for row in rows: 
      self.writerow(row) 

conn = sqlite3.connect('yourdb.sqlite') 

c = conn.cursor() 
c.execute('select * from yourtable') 

writer = UnicodeWriter(open("export.csv", "wb")) 

writer.writerows(c) 

आशा है कि इससे मदद मिलती है!

संपादित करें: उत्पादन करने के लिए:

# Select whichever rows you want in whatever order you like 
c.execute('select id, forename, surname, email from contacts') 

writer = UnicodeWriter(open("export.csv", "wb")) 

# Make sure the list of column headers you pass in are in the same order as your SELECT 
writer.writerow(["ID", "Forename", "Surname", "Email"]) 
writer.writerows(c) 

संपादित करें 2: आप CSV में हेडर चाहते हैं, त्वरित तरीका मैन्युअल रूप से इससे पहले कि आप, डेटाबेस से डेटा लिखने जैसे एक और पंक्ति जोड़ने के लिए है पाइप-अलग कॉलम, कस्टम CSV बोली रजिस्टर और पारित कि लेखक में है, इसलिए जैसे:

csv.register_dialect('pipeseparated', delimiter = '|') 

writer = UnicodeWriter(open("export.csv", "wb"), dialect='pipeseparated') 

यहाँ a list of the various formatting parameters आप एक कस्टम बोली के साथ उपयोग कर सकते हैं।

+0

हां, यह सहायक है। लेकिन सभी डेटा एक कॉलम में हैं। उदाहरण के लिए मेरे पास डेटाबेस में 4 कॉलम और 12 पंक्तियां थीं (एसक्लाइट 3)। यह संभव है इसे विभाजित करें? शायद सीएसवी में हेडर के साथ टेबल बनाएं? Thx – Risino

+0

मुझे काफी समझ में नहीं आता है- यह कोड पहले से ही अल्पविराम से अलग चुने गए कॉलम आउटपुट करता है (या कम से कम यह तब होता है जब मैं इसे चलाता हूं)। क्या आप जेनरेट की गई CSV फ़ाइल से एक उदाहरण पंक्ति पोस्ट कर सकते हैं? –

+0

हां, आप सही हैं। हाँ, आप सही हैं। यह कोड अल्पविराम से अलग है: आईडी, फोरनाम, उपनाम, ईमेल, लेकिन यदि यह संभव है तो मैं कॉलम से अलग चाहता हूं। उदाहरण: | आईडी | Forename | उपनाम | ईमेल | – Risino

1

यहाँ Yes.Read sqlitebrowser

  • आयात और निर्यात पाठ के रूप में रिकॉर्ड
  • /सीएसवी करने के लिए फाइलों से
  • आयात और निर्यात तालिकाओं
  • आयात और निर्यात डेटाबेस से/एसक्यूएल को डंप फ़ाइलों
0

बाहरी कार्यक्रम: विवरण के लिए sqlite3 के लिए दस्तावेज़ देखें। आप इसे खोल/कमांड लाइन से कर सकते हैं।

मक्खी पर: csv module आप CSV फ़ाइल स्वरूप को संभालने के लिए मदद मिलेगी सही ढंग से

संबंधित मुद्दे