2009-10-13 10 views
8

मेरे पास इस तरह के विभिन्न कॉलम के साथ दो टेबल हैं:SQLite में दो तालिकाओं के बीच डेटा की प्रतिलिपि कैसे करें?

table1 
(
    _id, 
    title, 
    name, 
    number, 
    address 
) 

table2 
(
    _id, 
    phone, 
    name, 
    address 
) 

मैं तालिका 1 से तालिका 2 में डेटा 'नाम', 'पता' कैसे कॉपी कर सकता हूं।

और मेरे प्रश्न में दो स्थितियां हैं:

  • पहला: तालिका 1, तालिका 2 उसी डेटाबेस फ़ाइल में
  • दूसरा: data1.db फ़ाइल में table1, table2.db फ़ाइल में table2

उत्तर

20

insert into table2 (name, address) 
select name, address 
from table1 

स्तंभके मूल्यों हैं: एसक्यूएल में

प्रतिलिपि बनाई जा रही है ताकि तरह काम करता है 713,210 समान है, इसलिए डालें और

insert into table2 (name, address) 
select name, address 
from table1 t1 
where not exists (select * from table2 t2 where t1._id = t2._id) 
; 
update table2 t2 name = (select name from table1 t2 where t1._id = t2._id) 
; 
update table2 t2 address = (select address from table1 t2 where t1._id = t2._id) 

अद्यतन आप डेटाबेस के बीच कॉलम कॉपी करने के लिए की जरूरत है के लिए, आप पहली बार (उदाहरण सीएसवी के लिए, आप की तरह किसी भी प्रारूप का उपयोग करें) एक फ़ाइल में उन्हें निर्यात और फिर विलय कि जरूरत दूसरे डेटाबेस में मैन्युअल रूप से फ़ाइल करें क्योंकि आप एक एसक्यूएल नहीं लिख सकते हैं जो कहता है "इन स्क्लाइट संरचनाओं का उपयोग करें"।

+0

क्यों न केवल पहली बार आईड्स डालें? – TheOne

+0

@Ramin: मेरा कोड पहली बार सभी आईडी को सम्मिलित करता है। यदि आप पहले से मौजूद 'table2' से ids डालने का प्रयास करते हैं, तो आपको त्रुटियां मिलेंगी। तो दो अद्यतन विवरण सभी मौजूदा आईडी के लिए गैर-आईडी फ़ील्ड की प्रतिलिपि बनाएंगे। –

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