回答編集履歴
1
pythonによる回答を追記
answer
CHANGED
@@ -57,4 +57,37 @@
|
|
57
57
|
2020-06-14|C|3
|
58
58
|
2020-06-17|D|3
|
59
59
|
```
|
60
|
-
と、新たに意図したレコードが追加されています。
|
60
|
+
と、新たに意図したレコードが追加されています。
|
61
|
+
|
62
|
+
#### pythonによる方法(回答欄での質問に対する返事)
|
63
|
+
PRIMARY KEYやUNIQUE制約を持ったテーブルに対して、pythonを使ってCSVファイルを追記する方法を示します。
|
64
|
+
重要なことは`INSERT`の代わりに`INSERT OR IGNORE`を用いることです。
|
65
|
+
|
66
|
+
```python
|
67
|
+
import sqlite3
|
68
|
+
|
69
|
+
|
70
|
+
def insert_csv(conn, filename):
|
71
|
+
with open(filename, "r") as f:
|
72
|
+
items = []
|
73
|
+
for line in f:
|
74
|
+
cols = line.strip().split(",")
|
75
|
+
items.append(cols)
|
76
|
+
cur = conn.cursor()
|
77
|
+
cur.executemany(
|
78
|
+
"INSERT OR IGNORE INTO hoge (date,type,value) VALUES (?,?,?)",
|
79
|
+
items,
|
80
|
+
)
|
81
|
+
conn.commit()
|
82
|
+
|
83
|
+
|
84
|
+
def main():
|
85
|
+
conn = sqlite3.connect("test.db")
|
86
|
+
insert_csv(conn, "test1.csv")
|
87
|
+
insert_csv(conn, "test2.csv")
|
88
|
+
conn.close()
|
89
|
+
|
90
|
+
|
91
|
+
if __name__ == "__main__":
|
92
|
+
main()
|
93
|
+
```
|