首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将平面文件数据库传输到MySQL数据库

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

Stack Overflow用户
提问于 2011-01-09 23:24:48
回答 2查看 1.9K关注 0票数 1

我有一个平面文件数据库(是的,我知道--最糟糕的是它只有1.4 to ),我正在把它移到MySQL数据库中。问题是,我不确定该怎么做--我已经检查了这里的所有相关问题,但没有一个与我想要做的事情有关,也没有一个与我的数据库当前的设置方式有关。

我当前的平面文件数据库的设置是,普通的MySQL行是它自己的文件,MySQL表是目录。因此,例如,如果您有一个名为Jon的用户,则在名为/members/的目录中将有一个该用户的文件。该文件中包含用户的各种信息,包括用户id、排名等,所有这些信息都由制表符分隔,并且都在单独的行上(userid\t4)。

下面是一个示例用户文件:

代码语言:javascript
运行
AI代码解释
复制
userid     4
notes      staff notes: bla bla    staff2 notes: bla bla bla
username   Example

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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-09 23:51:35

这似乎是一个相当微不足道的脚本问题。

关于如何将user目录读入user表,请参见下面的示例(伪代码)。

显然,您会希望它更健壮一些,具有错误检查/数据验证功能,但仅从角度来看,请参见以下内容:

代码语言:javascript
运行
AI代码解释
复制
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
EN

Stack Overflow用户

发布于 2011-01-09 23:33:40

LOAD DATA INFILE用于CSV文件,而您的不是,因此:

  • 将一个目录中的所有文件合并到一个CSV文件中,删除列的名称(userid、username...)并使用分隔符(TAB,";",...)分隔cols然后导入为CVS。为您获得的每个目录执行
  • 循环。

或者写一个“愚蠢的”程序(php运行得很好),为你做所有这些工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4642525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档