Импорт файла CSV в sqlite3 таблицу базы данных с помощью Python

Вы можете использовать регулярные выражения:

bool isZero = Regex.Matches(input,"[0,]");

или

bool isZero = int.Parse(input.Replace(",","") == 0;

Вместо того, чтобы пытаться заставить его быть действительным двойным числом, удаляя лишние запятые, нечисловые символы, .. попробуйте подтвердить это:

  public static bool IsValidDouble(this string s)
  {
      double d = 0;
      double.TryParse(s, out d);
      return d != 0; //will be false if result is 0 
      //return d > 0; if you don't want negativer values 
  }
90
задан igaurav 19 October 2014 в 07:18
поделиться

3 ответа

import csv, sqlite3

con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("CREATE TABLE t (col1, col2);") # use your column names here

with open('data.csv','rb') as fin: # `with` statement available in 2.5+
    # csv.DictReader uses first line in file for column headings by default
    dr = csv.DictReader(fin) # comma is default delimiter
    to_db = [(i['col1'], i['col2']) for i in dr]

cur.executemany("INSERT INTO t (col1, col2) VALUES (?, ?);", to_db)
con.commit()
con.close()
117
ответ дан 24 November 2019 в 06:57
поделиться

Если файл CSV должен быть импортирован как часть программы Python, то для простоты и эффективности, Вы могли использовать os.system вдоль строк, предложенных следующим:

import os

cmd = """sqlite3 database.db <<< ".import input.csv mytable" """

rc = os.system(cmd)

print(rc)

Дело в том, что путем определения имени файла базы данных, данные будут автоматически сохранены, принимая, нет никаких ошибок при чтении его.

0
ответ дан 24 November 2019 в 06:57
поделиться

Команда .import - это функция инструмента командной строки sqlite3. Чтобы сделать это в Python, вы должны просто загрузить данные, используя любые средства Python, такие как модуль csv , и вставить данные как обычно.

Таким образом, вы также можете контролировать, какие типы вставляются, вместо того, чтобы полагаться на, казалось бы, недокументированное поведение sqlite3.

12
ответ дан 24 November 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: