2015-10-19 54 views
0

我有很多的sql表。这些表是“依赖的”,即在表之间定义了对外键的约束。 我需要将表格从sql转移到csv。什么是正确的方法来做到这一点:从sql传输数据模型表到csv

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

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

注:这是需要为在数据

+0

做到这一点的最佳方法取决于csv数据的预期用途。 –

+0

@Dan Bracuk - 有一个应用程序读取数据并对数据运行分析(机器学习)。新数据每天插入表 – Yakov

+0

https://en.wikipedia.org/wiki/Extract,_transform,_load –

回答

1

我建议创建SQL视图包含从您在您的CSV需要在以后的所有表中的所有信息,运行一些anylitics另一个应用程序。 该视图已经实现了依赖关系(来自不同表格的两行的链接)并将它们连接在一起。

由于该视图将为您完成所有工作,因此创建新表格将比您的第二个建议更容易。

我想你会需要你的依赖。 所以你不应该忽视它们。 下面是一个简单的例子,它们是如何工作的: 可以说你有两张表,第一张是第一张,第二张是汽车。在人表中你有3列:ID,姓名,年龄。在第二个你有ID,车。要查看哪个人有哪辆车,您只需检查第一张表中哪个车辆在第二个车辆中具有哪个值。 如果您在视图中将它们链接在一起,则结果是包含列ID,人员,年龄,车的单个表。

相同的视图。 稍后,您可以将视图导出为CSV。

也许我可以帮助你更好,如果你定义你的需求更详细一点。 表中有什么样的数据,它们是如何链接的(主键/副键是什么)。

+0

你能解释一下为什么吗?并对我提出的提案进行评论/比较 – Yakov

+0

在CSV中,无法显示表格之间的依赖关系。如果你想从一个数据到另一个数据,最简单的方法就是创建一个视图。 SQL将生成一个表并为您加入所有数据。如果以后需要拆分它们,则可以在代码中进行拆分,并按照您希望的那样“还原”依赖项。但为了从SQL获取所有数据,我认为最简单的方法就是创建一个视图。 –

+0

显示依赖关系?我不确定我确实需要他们。我可以给列写同一个名字......是好的吗?在实践中如何“使用”这些依赖性?顺便说一句,SQL的所有依赖我有定义为ON删除没有行动更新没有行动 – Yakov