回答編集履歴

1

pythonによる回答を追記

2020/06/12 09:49

投稿

yymmt
yymmt

スコア1615

test CHANGED
@@ -117,3 +117,69 @@
117
117
  ```
118
118
 
119
119
  と、新たに意図したレコードが追加されています。
120
+
121
+
122
+
123
+ #### pythonによる方法(回答欄での質問に対する返事)
124
+
125
+ PRIMARY KEYやUNIQUE制約を持ったテーブルに対して、pythonを使ってCSVファイルを追記する方法を示します。
126
+
127
+ 重要なことは`INSERT`の代わりに`INSERT OR IGNORE`を用いることです。
128
+
129
+
130
+
131
+ ```python
132
+
133
+ import sqlite3
134
+
135
+
136
+
137
+
138
+
139
+ def insert_csv(conn, filename):
140
+
141
+ with open(filename, "r") as f:
142
+
143
+ items = []
144
+
145
+ for line in f:
146
+
147
+ cols = line.strip().split(",")
148
+
149
+ items.append(cols)
150
+
151
+ cur = conn.cursor()
152
+
153
+ cur.executemany(
154
+
155
+ "INSERT OR IGNORE INTO hoge (date,type,value) VALUES (?,?,?)",
156
+
157
+ items,
158
+
159
+ )
160
+
161
+ conn.commit()
162
+
163
+
164
+
165
+
166
+
167
+ def main():
168
+
169
+ conn = sqlite3.connect("test.db")
170
+
171
+ insert_csv(conn, "test1.csv")
172
+
173
+ insert_csv(conn, "test2.csv")
174
+
175
+ conn.close()
176
+
177
+
178
+
179
+
180
+
181
+ if __name__ == "__main__":
182
+
183
+ main()
184
+
185
+ ```