Как отслеживать исходные файлы, загруженные в MySQL? - PullRequest
2 голосов
/ 07 декабря 2011

Я загружаю файлы в MySQL.Каждый файл содержит:

Date ShopNumber subject price quantity total

например, файл1:

01/01/2011 Mexico Book1 $10 2 $20
01/01/2011 Mexico Book2 $10 2 $20
01/01/2011 Mexico Book3 $10 2 $20
...............................

файл2:

01/01/2011 Mexico Book4 $10 2 $20
01/01/2011 Mexico Book1 $10 1 $10
...............................

В таблице MySQL:

01/01/2011 Mexico Book1 $10 3 $30
01/01/2011 Mexico Book2 $10 2 $20
01/01/2011 Mexico Book3 $10 2 $20
01/01/2011 Mexico Book4 $10 2 $20
...............................

Проблема в том, что я должен отслеживать исходный файл и не могу включить исходный файл в уникальный ключ таблицы - мне нужно только сохранить итоги.Дубликаты редки.Можно ли добавить еще одну таблицу, в которой будут храниться только дубликаты?Спасибо.

1 Ответ

1 голос
/ 12 декабря 2011

Мое приложение включает функцию импорта, и вот как я решаю проблему загрузки данных в MySQL и отслеживания информации.

  • , когда пользователь загружает файл, приложение переформатирует его на вкладку-разделенный действительный временный файл в кодировке uft8
  • имя файла и некоторая другая метаинформация об импорте, которую приложение вставляет в отдельную таблицу import_info и получает его идентификатор (update_id)
  • затем приложение загружает данные из файла, используя запрос LOAD DATA INFILE, к которому он передает путь к файлу, и update_id (attr1, attr2, attr3 приходят из файла, update_idприходит от параметра к запросу)

    LOAD DATA LOCAL INFILE %(file_path)s
    INTO TABLE importdata
    CHARACTER SET 'utf8'
    (attr1, att2, att3, update_id)
    SET update_id = %(update_id)s;
    
  • таблица importdata в моем случае допускает дубликаты, которые приложение объединяет в другие таблицы после импорта данных.Если слияние выполнено успешно, я удаляю импортированные данные из таблицы importdata.

...