2009-08-22 54 views
0

我有一个.db文件,其大约20GB的大小有三个表和其余数据的实际问题。.db文件和MySQL

我在一个mac,所以我不得不使用一些蹩脚的应用程序,但它不会在Access中打开。

是否有人知道什么软件会产生一个.db文件,哪些软件可以让我打开它并将其导出为CSV或MySQL文件?

此外,如果在运输过程中连接中断可以影响文件?

回答

4

由于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 tablesdelete你认为合适的。

这里的倾销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指示使用哪个db;而"SELECT * FROM t"只是要执行的SQL命令。

+0

它的SQlite版本3, 什么是在mac上打开20gb .db文件的最佳方法是什么? 如果我不得不为每张桌子削减3次,我不会感到困扰。 – 2009-08-22 03:07:43

+0

那么我怎么能发出命令将.db文件复制到CSV? – 2009-08-22 03:24:13

+0

对不起,我很难过, 我得到这个“Unknown-00-1f-5b-c7-49-5c:〜MacHome $ sqlite3 -separator','-list /Users/MacHome/Desktop/tpb/tpb.db “SELECT * FROM猫” 100,音频 101,音频>音乐 102,音频>音频书籍 103,音频>声音剪辑 104,音频> FLAC 199,音频>其他 ETC ETC” 不这意味着它是完整的,如果是的话,它已经放置了CSV? – 2009-08-22 04:33:10

0

我不是Mac用户,但如果它是SQLite文件,我听说Base有很棒的事情。

+0

每当我尝试使用它时,它都会崩溃你认为这可能是因为我没有为它付费? – 2009-08-22 04:07:06

+0

不,大声笑。由于数据库的大小,这可能是内存溢出。尝试寻找替代方案@ alternativeto.net – 2009-08-22 04:14:17

+0

也许RazorSQL http://alternativeto.net/desktop/razorsql/?profile=mac&platform=mac – 2009-08-22 04:16:26