2012-11-27 13 views
12

मैं SQLite के भीतर टेबल में अपनी डेटा फ़ाइलों (जिनमें से एक दर्जन या तो) प्राप्त करने का प्रयास कर रहा हूं। प्रत्येक फ़ाइल में हेडर होता है और मैं आने वाले वर्ष में उन्हें कुछ बार प्राप्त करूँगा, इसलिए मैं यह चाहता हूं:SQLite3 आयात CSV और हेडर को छोड़ें/छोड़ें

  1. जब मैं उन्हें प्राप्त करता हूं तो शीर्षलेख को हटाने के लिए प्रत्येक फ़ाइल को संपादित करने से बचें;
  2. ऐसा करने के लिए खोल स्क्रिप्ट या पायथन पर वापस गिरने से बचें।

मैं अपने टेबल और आयात डेटा को परिभाषित ...

> .separator "\t" 
> .headers on 
> CREATE TABLE clinical(
     patid  VARCHAR(20), 
     eventdate CHAR(10), 
     sysdate CHAR(10), 
     constype INT, 
     consid  INT, 
     medcode INT, 
     staffid VARCHAR(20), 
     textid  INT, 
     episode INT, 
     enttype INT, 
     adid   INT); 
> .import "Sample_Clinical001.txt" clinical 
> SELECT * FROM clinical LIMIT 10; 
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid 
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid 
471001 30/01/1997 09/03/1997 4 68093 180 0 0 0 20 11484 
471001 30/01/1997 09/03/1997 2 68093 60 0 0 0 4 11485 

मेरी पहली सोचा हमलावर पंक्ति को हटाने के लिए था, लेकिन है कि उम्मीद के रूप में, बजाय इसे पूरी तालिका नष्ट कर दिया काम नहीं किया ..

> DELETE FROM clinical WHERE patid = "patid"; 
> SELECT * FROM clinical LIMIT 3; 
> 

क्या मुझे समानता गलत परीक्षण के लिए वाक्यविन्यास मिला? मुझे यकीन नहीं है; the docs दोनों के बीच अंतर नहीं लग रहा है। मैंने सोचा कि मैं फिर से कोशिश होगी ...

> .import "Sample_Clinical001.txt" clinical 
> SELECT * FROM clinical LIMIT 3; 
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid 
patid eventdate sysdate constype consid medcode staffid textid episode enttype adid 
471001 30/01/1997 09/03/1997 4 68093 180 0 0 0 20 11484 
471001 30/01/1997 09/03/1997 2 68093 60 0 0 0 4 11485 
> DELETE FROM clinical WHERE patid == "patid"; 
> SELECT * FROM clinical LIMIT 3; 
> 

मैं सही ट्रैक यहाँ पर भी या मैं कुछ बेवकूफ कर रहा हूँ?

मैं .import पर कॉल करते समय हेडर पंक्ति को छोड़ने का एक आसान विकल्प होने की अपेक्षा करता हूं क्योंकि पाठ फ़ाइलों में शीर्षलेख पंक्तियां काफी सामान्य स्थिति होती हैं।

उत्तर

6

patid एक कॉलम नाम है।
"patid" उद्धृत कॉलम नाम है।
'patid' एक स्ट्रिंग है।

स्थिति WHERE patid = "patid"patid कॉलम में मूल्य की तुलना अपने साथ करता है।

(SQLite MySQL साथ संगतता के लिए दोहरे उद्धरण चिह्नों के साथ तार की अनुमति देता है, लेकिन केवल जहां एक स्ट्रिंग एक मेज/स्तंभ नाम के साथ भ्रमित नहीं किया जा सकता है।)

+0

आह, हा! धन्यवाद मैंने इस सूक्ष्म नज़र को नहीं देखा था। – slackline

+0

बस यह सुनिश्चित करने के लिए, सही विलोपन करने वाली स्थिति WHIDE patid = "'patid'" होनी चाहिए, सही? – gvrocha

+0

@gvrocha नहीं, '' '...' '' 'समझ में नहीं आता है। –

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