За последние несколько дней я начал изучать SQL, но застрял при попытке перенести мои данные в таблицу.
Данные хранятся в текстовом файле в формате:
ColumnName1=SomeInteger
ColumnName2=SomeInteger
ColumnName3=SomeString
... etc
До сих пор мне удалось создать таблицу (которая содержит около 150 столбцов, которую я надеюсь разделить и сгруппировать отдельно, когда узнаю больше), удалив =SomeValue
в Python. Затем поместите имена столбцов в таблицу CREATE TABLE
. Немного грязно, но пока работает.
Теперь я застрял в следующей точке:
LOAD DATA INFILE 'path/to/file.txt'
INTO TABLE tableName
COLUMNS TERMINATED BY '\n'
LINES STARTING BY '=';
Я пытаюсь заставить SQL вставить данные в указанные имена столбцов (если они не всегда в одном и том же порядке), игнорировать знак равенства и использовать уникальное имя файла в качестве индекса.
Я также пытался экранировать символ равенства с помощью '\='
, потому что в документации MySQL упоминается, что все, что находится до параметра LINES STARTING BY
, следует игнорировать. Набрав LINES STARTING BY 'ColumnName1='
удается игнорировать первый экземпляр, но это не совсем то, что я хочу, и не работает для остальных строк.
Я не против читать больше документации или учебников, если кто-то может указать мне правильное направление.
edit: строки разделены следующим образом: мне выдано около 100 000 ini-файлов. Каждый из них называется FirstName_LastName.ini (уникальность гарантирована), и каждая строка данных содержится в INI-файлах. Мне нужно перенести архаичный метод хранения аккаунтов в 21 век.
Ходят слухи, что LOAD DATA в MySQL особенно быстры для задач такого типа, поэтому я начал рассматривать их как вариант. Мне просто интересно, можно ли манипулировать им для работы с данными в моем формате, или мне лучше поместить все файлы по 100 Кб через анализатор. Я все еще открыт для предложений, которые используют SQL, если есть какие-нибудь маги, читающие это.
p.s: Если у кого-то есть идеи о том, как перенести мои данные (из этого текстового формата) в отдельные таблицы, я бы тоже хотел их услышать.