Как импортировать в sql несколько разных таблиц из одного csv файла?
Имеется один файл формате csv, в нем находиться несколько разных таблиц, необходимо импортировать эти данные в sql по разным БД. Сам процесс импортирования не является трудным, однако не могу найти решения разделения чтения данных. Решение вижу в предварительном "разделение" файла, однако может сообщество подскажет что то другое?
cat tmp.txt
;;;;;
_CATEGORY_;_ID_;_NAME_;_PRICE_;_QUANTITY_;_IMAGE_
Блокноты;"Блокнот ""Запись делъ""";1800;20;data/IMG_990.jpg;
Блокноты;"Блокнот ""День после..""";1800;15;data/01-05-01.jpg;
Визитницы;"Визитница ""Весь мир на ладони""";1300;25;data/IMG_9913.jpg;
Визитницы;"Визитница ""Друзья, партнёры...""";1300;5;data/img-dr.jpg;
;;;;;
Users;Rooms;Tel;;;
Иванов;204;233-333-4(23);;;
Петров;Holdroom;233-333-4(24);;;
Сидоров;3302;233-333-4(01);;;
vaindante-os:~ vaindante$ python3
Python 3.6.4 (v3.6.4:d48ecebad5, Dec 18 2017, 21:07:28)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> with open('tmp.txt') as f:
... for t in f.read().split(';;;;;'):
... print(t)
...
_CATEGORY_;_ID_;_NAME_;_PRICE_;_QUANTITY_;_IMAGE_
Блокноты;"Блокнот ""Запись делъ""";1800;20;data/IMG_990.jpg;
Блокноты;"Блокнот ""День после..""";1800;15;data/01-05-01.jpg;
Визитницы;"Визитница ""Весь мир на ладони""";1300;25;data/IMG_9913.jpg;
Визитницы;"Визитница ""Друзья, партнёры...""";1300;5;data/img-dr.jpg;
Users;Rooms;Tel;;;
Иванов;204;233-333-4(23);;;
Петров;Holdroom;233-333-4(24);;;
Сидоров;3302;233-333-4(01);;;
Если не все так одназначно, то используйте регулярку
Влад Григорьев, Данный пример позволил мне разделить таблицы однако я не понял как мне использовать данные из этих таблиц для импорта в SQL, что и является моей основной целью. Не получается отдельно взять данные из верхней таблиц и отдельно из нижней.
Влад Григорьев, Не могу понять как мне можно использовать "split" в моей конструкции
with open ( "export.csv", 'r' ) as fin: # `
dr = csv.DictReader(fin, delimiter=';') #
for i in dr:
to_db = [(i['п»ї_CATEGORY_'], i['_ID_']) for i in dr]
cur.executemany ( "INSERT INTO q (CATEGORY, ID) VALUES (?, ?);", to_db )
csv.DictReader позволит мне потом взять данные из нижней таблицы? Или я что то делаю не так?
Bfile = "export.csv"
with open ( Bfile, 'r' ) as fin:
for t in fin.read ().split ( ';;;;;' ):
dr = csv.DictReader (t, delimiter =';')
for i in dr:
to_db = [(i['п»ї_CATEGORY_'], i['_ID_']) for i in dr]
print (to_db)
В итоге получается ошибка KeyError: 'п»ї_CATEGORY_', при шаговом анализе получается что csv.DictReader после split не получает данные. Возможно ошибка у меня?