将平面文件数据库传输到MySQL数据库

时间:2011-01-09 23:24:48

标签: mysql database file

我有一个平面文件数据库(是的,我知道 - 最糟糕的是它是1.4GB),我正在将它移动到MySQL数据库。问题是我不知道该怎么做 - 我已经检查了这里的每个相关问题,但没有涉及我想做什么,也没有涉及我的数据库当前是如何设置的。

我当前的平面文件数据库设置为普通MySQL行是其自己的文件,并且MySQL表将是目录。因此,例如,如果您有一个名为Jon的用户,则会在名为/ members /的目录中为该用户提供一个文件。在该文件中将是用户的各种信息,包括用户ID,等级等 - 全部由选项卡分隔,全部在单独的行(userid \ t4)。

所以这是一个示例用户文件:

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

那么如何在MySQL中将上述内容转换为自己的行和字段?如果可能的话,我可以一次完成数千个这样的文件吗?

感谢。

2 个答案:

答案 0 :(得分:1)

这似乎是一个相当简单的脚本问题。

请参阅下面的示例(伪代码),了解如何将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']
    )
  )

答案 1 :(得分:0)

LOAD DATA INFILE用于CSV文件,而你的用户不是,所以:

  • 合并单个CSV文件中目录中的所有文件,删除列的名称(userid,username ...)并将cols与分隔符([TAB],“;”,...)分开导入为CVS。
  • 为你得到的每个目录循环。

或写一个“愚蠢”程序(php运行良好),为你完成所有这些工作。