V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
2owe
V2EX  ›  问与答

求助,大量数据迁移:从 MS SQL Server 导出

  •  
  •   2owe · 2015-12-14 15:58:28 +08:00 · 2344 次点击
    这是一个创建于 3278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    合作方说他们用的是 MS SQL Server ,可以很方便地给出 xx.mdfxx_log.ldf 文件,再或者 ACCESS 文件也行。

    我请求对方提供 .sql 或者 .sql.zip 或者 .csv 都被拒绝了啊,对方说:“其实 SQL SERVER 和 ACCESS 已经是最常用的两种格式了”。可是今天之前我确实木有见过 .mdf.mdb 类型的文件呀…

    额,我用的 mbp , google 了一圈也木有找到合适的工具或方法来解析这些数据 (给 mbp 用户丢人了…)。

    其实数据量小也就算了, lz 凭借熟练的 sublime 快捷键技巧就可以搞定。但对方说量很大呀,每行 20 个字段左右,不压缩的数据量约 1T 左右。


    求助各位大大,跟合作方要什么格式好,怎么解析呀?

    12 条回复    2015-12-14 18:21:20 +08:00
    pynix
        1
    pynix  
       2015-12-14 16:10:50 +08:00   ❤️ 1
    mdf 是 ms 的格式,暂时无法解析吧。
    pynix
        2
    pynix  
       2015-12-14 16:11:14 +08:00   ❤️ 1
    安装 Windows 解决
    rainex
        3
    rainex  
       2015-12-14 16:29:28 +08:00   ❤️ 1
    很多年不用细节也记不清了,但大概还记得,那两种文件就是 sqlserver 的数据文件和日志记录

    导入导出也很简单, windows 的控制面板里有 odbc 数据源,只要系统有那种数据库的 odbc 驱动(基本上数据库产品都有 windows 的 odbc 驱动, windows 一般自带 access 等,其它的比如 mysql 的其官网可以下载,这差不多是全世界数据库支持最多的一个数据接口标准了),然后那个界面就可以帮助你导入导出,相当于可以任意转换不同的数据库。

    有些数据库有些特别的约束,那可以灵活的先取消特别的约束(建议你可以本地先装个 sqlserver ,管理器里操作,图形界面),再导出,最后自己再加上。
    loading
        4
    loading  
       2015-12-14 16:44:06 +08:00 via Android   ❤️ 1
    装虚拟机
    dong3580
        5
    dong3580  
       2015-12-14 16:47:55 +08:00   ❤️ 1
    @2owe
    这么大,是倒不出来数据的。
    如果不想换成 win ,倒是有个好办法,请求对方写个数据对接 api ,然后对方有个样本的数据内容给你,你这边写个程序从 api 批量或者一条条获取数据。.NET MVC 可以直接生成傻瓜式简单的增删改查 代码,然后部署,只要请求方式合理,也不会有太大的性能问题。
    loading
        6
    loading  
       2015-12-14 16:55:51 +08:00 via Android   ❤️ 1
    最好就是你过去他们机器,装上你要的数据库,然后导入~或者自己写 python 导入
    2owe
        7
    2owe  
    OP
       2015-12-14 17:44:00 +08:00
    @pynix @rainex @loading

    先感谢各位的帮助,让我在黑暗中重见光明, m(_ _)m

    回复关于“使用 windows 系统” 的方案:如果是使用视图界面程序的话,由于对方提供的数据文件非常大( 1T 左右),我害怕程序会因为没有优化加载、写入而挂掉…虽然是 Windows 环境,还是倾向于命令行方式…可命令行方式的话,理论上 *nix 环境也会有解决方案才对。

    也许如 @loading 所说, life is hard, why forget Python, :P (原意并不是想要挑起语言战争…)
    2owe
        8
    2owe  
    OP
       2015-12-14 17:45:42 +08:00
    @dong3580 嗯呐,和对方沟通,求对方给个数据接口。
    izoabr
        9
    izoabr  
       2015-12-14 17:46:40 +08:00   ❤️ 1
    navicat 做迁移?

    或者你装个 MySQL ,用 MySQL 的迁移工具从 SQL SERVER 迁移到 MySQL ,然后就随便你折腾了吧。
    jarlyyn
        10
    jarlyyn  
       2015-12-14 17:50:10 +08:00   ❤️ 1
    navicat?

    我被折腾过 sql 的.bak 格式
    heaton_nobu
        11
    heaton_nobu  
       2015-12-14 18:12:05 +08:00   ❤️ 1
    windows 虚拟机上装 sql server ,直接附加文件就可以了
    bugsnail
        12
    bugsnail  
       2015-12-14 18:21:20 +08:00   ❤️ 1
    对于会 ETL 的人来说, 1T 也不是很多楼主....

    这样吧, 1T 的数据看你要求也不是很严格, 主要是操作麻烦一点, 建议:

    使用 navicat 的 data transfer 功能, 设置好导数据的方式(最好一小部分,一小部分导)

    就是要一个 mssqlserver 的数据库账号来连接读取, 而且也要看你们那的网络情况.....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:53 · PVG 03:53 · LAX 11:53 · JFK 14:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.