Перенос базы данных плоских файлов в базу данных MySQL - PullRequest
1 голос
/ 10 января 2011

У меня есть база данных с плоскими файлами (да, брутто, я знаю, что хуже всего - 1,4 ГБ), и я нахожусь в процессе ее перемещения в базу данных MySQL.Проблема в том, что я не уверен, как это сделать - и я проверил все связанные с этим вопросы, но ни один не связан с тем, что я хочу сделать, ни с тем, как моя база данных в настоящее время настраивается.

Моя текущая база данных с плоскими файлами настроена так, чтобы обычная строка MySQL представляла собой собственный файл, а таблица MySQL была бы каталогом.Так, например, если у вас есть пользователь с именем Jon, в каталоге будет находиться файл для пользователя с именем / members /.В этом файле будет различная информация для пользователя, включая идентификатор пользователя, рейтинг и т. Д. - все разделены вкладками, все в отдельных строках (userid \ t4).

Итак, вот пример файла пользователя:

userid     4
notes      staff notes: bla bla    staff2 notes: bla bla bla
username   Example

Так, как я могу преобразовать вышеупомянутое в их собственные строки и поля в MySQL?И если возможно, могу ли я сделать тысячи этих файлов одновременно?

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 января 2011

Это кажется довольно тривиальной проблемой скриптинга.

См. Пример (псевдокод) ниже, чтобы узнать, как вы можете читать из каталога user в таблицу user.

Очевидно, вы хотите, чтобы он был немного более устойчивым,с проверкой ошибок / проверкой данных, но только для перспективы, см. ниже:

for file in list_dir('/path/to/users/'):
  line_data = dict()
  for line in open(file, 'r'):
    key, value = line.split("\t", 1)
    line_data[key] = value

  mysql_query('''
    INSERT INTO 
      users 
    SET 
      user_id = $1,
      foo = $2,
      bar = $3
    ''', 
    (
      line_data['user_id'],
      line_data['foo'],
      line_data['bar']
    )
  )
0 голосов
/ 10 января 2011

LOAD DATA INFILE используется для файлов CSV, а ваши нет. Поэтому:

  • объединяет все файлы в каталоге в один файл CSV, удаляя имя столбцов (идентификатор пользователя, имя пользователя...) и отделите столбцы с помощью разделителя ([TAB], ";", ...), а затем импортируйте их как CVS.
  • Цикл для каждого полученного вами каталога.

или напишите «глупую» программу (php работает хорошо), которая сделает всю эту работу за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...