2014-07-11 63 views
0

Database :: .db(SQLite);代碼語言:: C#使用複製列名創建表,鍵入並插入記錄

我想創建一個臨時表,然後將值插入入

目前我插入的記錄,像下面

create table temp1 AS Select A1, A2 from TableA

當前問題::

還有超過10億記錄(或可以更多)在表A 因爲那個代碼正在越來越系統內存溢出。

我覺得

  1. 創建表
  2. 插入記錄(每次5000 - 高達完成)

對於同樣,我認爲,

  1. 只創建表與列名(A1)和它的數據類型(整數),列ame(A2)和它的數據類型(CHAR(3))(我只通過SELECT A1, A2 from TABLEA

  2. INSERT records :: 5000 in one loop。 (我不知道如何限制呢?)

我的意思是 選擇第5000條記錄,然後 選擇5001到10000條記錄,然後 選擇10001至15000的記錄 ... ...

我知道......

SELECT A1, A2 from TABLEA limit 5000(這將讓前5000條記錄,但如何在這之後?)

是否有任何其它L. ogic可以滿足我的要求嗎?

SELECT INTO不是SQLite的

支持
+0

您在使用使用'CREATE TABLE'或'創建臨時TABLE'?你在使用內存數據庫嗎? –

+0

我發現很難相信SQLite設計人員在他們有足夠的內存用於任何操作的情況下編寫他們的應用程序。這似乎是一個愚蠢的假設...... –

+0

@CL。我只使用CREATE TABLE ....我不是將它存儲在內存數據庫中,而是創建它,因爲我需要用一些外部值更新每條記錄,然後運行我的實際查詢 – Hardik

回答

0

可以

SELECT A1, A2 from TABLEA limit 0,5000 //for first 5000 rows 
SELECT A1, A2 from TABLEA limit 5000,10000 //for Next 5000 rows 
+0

第一個將是創建表命令。大概會插入後面的那些? –

+0

@Jack ...真的很有幫助 – Hardik

+1

這對大偏移量來說效率極低。 –