【发布时间】:2009-08-22 12:36:05
【问题描述】:
我遇到了一个 .db 文件的实际问题,它的大小约为 20gb,包含三个表和其余数据。
我使用的是 Mac,所以我不得不使用一些糟糕的应用程序,但它无法在 Access 中打开。
有谁知道什么软件会生成 .db 文件,什么软件可以让我打开它并将其导出为 CSV 或 MySQL 文件?
此外,如果连接在传输过程中中断,这会影响文件吗?
【问题讨论】:
我遇到了一个 .db 文件的实际问题,它的大小约为 20gb,包含三个表和其余数据。
我使用的是 Mac,所以我不得不使用一些糟糕的应用程序,但它无法在 Access 中打开。
有谁知道什么软件会生成 .db 文件,什么软件可以让我打开它并将其导出为 CSV 或 MySQL 文件?
此外,如果连接在传输过程中中断,这会影响文件吗?
【问题讨论】:
由于mac现在是基于BSD的,尝试打开一个终端并执行命令file /path/to/large/db——它至少应该告诉你数据库是什么文件类型,然后你可以从那里确定使用什么程序来打开它.可能是 MySQL,可能是 PostGreSQL,可能是 SQLite——文件会告诉你。
例子:
$ file a.db
a.db: SQLite 3.x database
$ file ~/.kde/share/apps/amarok/mysqle/amarok/tracks.{frm,MYD,MYI}
~/.kde/share/apps/amarok/mysqle/amarok/tracks.frm: MySQL table definition file Version 10
~/.kde/share/apps/amarok/mysqle/amarok/tracks.MYD: data
~/.kde/share/apps/amarok/mysqle/amarok/tracks.MYI: MySQL MISAM compressed data file Version 1
所以它是 SQLite v3?那就试试吧
sqlite3 /path/to/db
您可以从 CLI 执行几乎标准的 SQL。 At the CLI, you can type .tables to list all the tables in that DB。 -- 或者,如果您更喜欢 GUI,this question 中列出了一些选项。接受的答案是SQLite manager for Firefox。
那么你可以drop tables 或delete,只要你认为合适。
这是一个将 csv 转储到标准输出的示例:
$ sqlite3 -separator ',' -list a.db "SELECT * FROM t"
3,4
3,5
100,200
并将其存储到文件中 - > 运算符将输出重定向到您命名的文件:
$ sqlite3 -separator ',' -list a.db "SELECT * FROM t" > a.csv
$ cat a.csv # puts the contents of a.csv on stdout
3,4
3,5
100,200
-separator ',' 表示字段用逗号分隔; -list 表示将行数据放在同一行,使用分隔符; a.db 表示使用哪个数据库;而"SELECT * FROM t" 只是要执行的 SQL 命令。
【讨论】:
我不是 Mac 用户,但如果是 SQLite 文件,我听说过关于 Base 的好消息。
【讨论】: