我正在編寫一個python腳本以將信息從大量文本文件中提取到數據庫中。爲了簡單起見,假設列是id
(主鍵,存儲爲text
的一串數字),name
(存儲爲text
,不唯一)以及一堆包含其他數據的其他列。在sqlite數據庫中更新字符擴展的字段,其中最不重要的數字/字符匹配
腳本都在一個點但是效果很好,在源文件中的id
領域從< = 6個字符的7個字符改變,與額外的數字添加到現有記錄ID的開始 - 那麼12345有可能成爲2(或3312345等)。似乎沒有辦法一致確定增加的數字是什麼,但前面的id
總是仍然作爲最不重要的n數字(其中n =舊的id
的長度)。
我想要做的就是創建一個SQLite查詢到在進口,其中用於更新id
到新格式的id
換個點上運行,其中一)name
領域是一樣的現有行新記錄的最低有效位數與舊ID完全匹配。我正在努力編寫一個這樣的查詢,但是 - 有什麼想法?
編輯:按照要求,例如數據:
初始表:
+--------+-----------------+-------+
| id | name | other |
+--------+-----------------+-------+
| 277908 | Anderson, Jason | foo |
| 10360 | Anderson, Jean | bar |
| 10371 | Anderson, John | baz |
| 57892 | Anderson, John | qwe |
+--------+-----------------+-------+
那麼,如果我們遇到的記錄被更新:
+---------+-----------------+-----+
| 1277908 | Anderson, Jason | asd |
+---------+-----------------+-----+
的ID被更新並且桌子變成:
+--------+-----------------+-------+
| id | name | other |
+--------+-----------------+-------+
|1277908 | Anderson, Jason | foo |
| 10360 | Anderson, Jean | bar |
| 10371 | Anderson, John | baz |
| 57892 | Anderson, John | qwe |
+--------+-----------------+-------+
但是,如果我們再遇到記錄:
+---------+-----------------+-----+
| 2010360 | Anderson, Jean2 | zxc |
+---------+-----------------+-----+
那麼該表沒有被修改的名稱不匹配一個記錄中,如果我們遇到的記錄:
+---------+----------------+-----+
| 2010371 | Anderson, John | poi |
+---------+----------------+-----+
那麼只有具有匹配至少顯著數字ID被更新,並表變爲:
+--------+-----------------+-------+
| id | name | other |
+--------+-----------------+-------+
|1277908 | Anderson, Jason | foo |
| 10360 | Anderson, Jean | bar |
|2010371 | Anderson, John | baz |
| 57892 | Anderson, John | qwe |
+--------+-----------------+-------+
需要注意的是,我們在這裏只有更新ID字段 - 這是故意的,因爲這將是一次運行一次的條件,它將更新發生id更改的數據中的記錄。其他數據將被更新或在該零件運行後添加記錄。
請提供一些示例數據和您期望的結果。 (有關如何添加一些內容,請參見[如何 格式堆棧溢出 post?](https://meta.stackexchange.com/q/96125)中的SQL表格。) –
@CL。添加示例。 – davidov7
什麼是* n *? 5或6? –