首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构化.TXT数据到一个合适的数据库管理系统

结构化.TXT数据到一个合适的数据库管理系统
EN

Database Administration用户
提问于 2018-12-22 09:58:31
回答 2查看 321关注 0票数 3

我收到了多个.txt文档(每个文档都有自己的一组列),其中包含用某种类型的分隔符分隔的行(这在文件中是不同的)。每个.txt文件有不同数量的列/名称,它们的大小很大,有些被分割成100 MB块。数据可能包含格式错误的行。

我的工作是将它们导入到符合这些要求的适当DBMS中:

  • 进口速度不应该太差。对于700米行,几个小时是可以接受的。
  • 导入应该支持忽略格式错误的行。
  • 查询数据应支持模式匹配,如SQL中的%m%
  • 读操作比写操作更重要。一旦导入所有内容,读取应该在毫秒内完成
  • 会有很多桌子。查询所有表都需要很容易

我已经尝试过使用关系DBMS (MySQL,PostgreSQL),但它们不支持跳过格式错误的行(这是一个很大的问题)。我尝试过mongoDB,但是有些数据包含双引号,我不确定导入速度是否足够好。

我最近甚至尝试使用Cassandra,但它在模式匹配和多表查询方面非常有限。

这个任务并不容易,我花了很多时间阅读,并试图找到自己的解决方案。如果有人能帮我解决这个问题,我会非常感激的。

数据已被提取并给出,无法修改该进程。转换是不可能的,因为数据大小超出了手动编辑的限制。装货是我苦苦挣扎的一步。我想找一个能做这种事情的DBMS。

我对NoSQL数据库管理系统考虑了很多,但它们并不能满足所有的需求。我认为像PostgreSQL这样的SQL会做到这一点,但是我很难插入数据,因为它不支持跳过格式错误的行。

现在我来考虑一下,它比非结构化的数据更有结构化。因此,它非常适合SQL,但唯一的问题是数据包含一些格式错误的行,而我需要相当好的导入速度。

两行格式文件(用户名:电子邮件):

  • 有效行: admin:email@hotmail.com
  • 格式错误的行(包含额外的列):admin:my:email@hotmail.com
EN

回答 2

Database Administration用户

发布于 2018-12-23 21:34:47

当我以前遇到类似的问题时,我最后

  1. 编写预导入解析器(C),它遍历提取的数据并创建一个有效条目文件和一个格式错误的条目文件。
  2. 使用导入向导将有效条目导入Sql server,该向导用于为每个导入文件类型创建调度作业。
  3. 导入之后,有几个作业会进一步操作数据并复制到最终用户表中。

主要问题是识别格式错误的数据并对其进行处理,并确保在可能的情况下对所有文件使用相同的模式。

票数 0
EN

Database Administration用户

发布于 2018-12-24 00:08:29

您可以使用powershell的文本(例如获取内容、拆分、连接)和csv (Import、转化法-csv、导出-csv和数据表函数)来清除其免费powershell支持的数据。

sql server中的大容量插入对于加载文本文件非常有用,而且非常快。

通常,您需要将csv加载到包含文本varchar(max)列的load表中,然后验证并将加载表加载或拒绝到暂存表中,每个阶段都执行清理操作(固定日期、转换、格式化),如果您正在使用nix,那么awk和grep将运行良好,awk是一个很好的工具。

ETL本身就是一门学科,将数据加载到dbs中存在许多问题。

您还可以将每一行加载到单个大型文本列中,例如varchar(max)作为blob,并使用sql函数将数据拆分到一个列分隔的表中。

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

https://dba.stackexchange.com/questions/225609

复制
相关文章

相似问题

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