【问题标题】:Transfer data model tables from sql to csv将数据模型表从 sql 传输到 csv
【发布时间】:2016-01-17 17:58:18
【问题描述】:

我有很多 sql 表。这些表是“依赖的”,即在表之间定义了外键约束。 我需要将表从 sql 传输到 csv。这样做的正确方法是什么:

  • 完全按照 sql 中定义的方式定义表? (我应该如何处理外键?)
  • 尝试通过基于外键加入现有表来生成其他表,以隐藏外键依赖关系?

可能还有其他选择吗?优缺点都有什么 ? 谢谢,

注意:这需要另一个应用程序对数据运行一些anylitics

【问题讨论】:

  • 执行此操作的最佳方法取决于 csv 数据的预期用途。
  • @Dan Bracuk - 有一个应用程序可以读取数据并在数据上运行分析(机器学习)。每天向表中插入一次新数据

标签: sql csv foreign-keys primary-key datamodel


【解决方案1】:

我建议在 SQL 中创建一个视图,其中包含您稍后在 CSV 中需要的所有表中的所有信息。 该视图已经实现了依赖关系(来自不同表的两行的链接)并将所有链接都链接到一个表中。

创建一个新表比您的第二个建议要容易得多,因为视图将为您完成所有工作。

我猜你会需要你的依赖。 所以你不应该忽视它们。 这里有一个简单的例子,它们是如何工作的: 假设你有 2 个表,第一个是名为 people,第二个是 cars。在人员表中,您有 3 列:ID、姓名、年龄。在第二个中,您有 ID,汽车。要查看哪个人拥有哪辆车,您只需检查第一个表中的哪个 id 在第二个表中的 car 值。 如果在视图中将它们链接在一起,则结果是一个包含 ID、Person、Age、Car 列的单个表。

视图也是如此。 稍后您可以简单地将视图导出为 CSV。

如果您更详细地定义您的需求,也许我可以为您提供更好的帮助。 您的表中有哪些类型的数据,它们是如何链接的(主键/辅助键是什么)。

【讨论】:

  • 你能解释一下原因吗?并评论/比较我的建议
  • 在 CSV 中无法显示表之间的依赖关系。如果您想将数据从一个连接到另一个,最简单的方法是创建一个视图。 SQL 将生成一个表并为您连接所有数据。如果您稍后需要拆分它们,您可以在代码中执行它并按照您希望的方式“恢复”依赖项。但在我看来,从 SQL 中获取所有数据最简单的方法是创建一个视图。
  • 显示依赖关系?我不确定我是否确实需要它们。我可以给列赋予相同的名称...这样好吗?在实践中如何“使用”依赖项?顺便说一句,我在 sql 上的所有依赖项都被定义为 ON DELETE NO ACTION ON UPDATE NO ACTION
  • 为什么要将它们链接在一起?为什么不保留 2 张桌子?我的需要 - 运行相同的查询和插入数据 - 表应该在 csv
  • 当然你不必链接它们。如果需要,您可以按原样导出每个表。只需运行查询,然后将结果保存为 csv。但是你拥有的表格越多,你最终拥有的 csv 文件就越多。即使您创建了一个视图,这也不会改变您的任何插入例程...
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 2021-05-13
  • 2018-02-23
  • 1970-01-01
相关资源
最近更新 更多