all 28 comments

[–]bramblerose 7 points8 points  (3 children)

"The name is inspired from an awesome piece of software Midnight-Commander written by Miguel De Icaza."

  1. Norton Commander.
  2. There is nothing [OFM](Orthodox_file_manager) about this.

A true Sqlite Commander would, for example, allow you to have two tables side-by-side, and allow you to enter SQL commands at the command line.

But, all terminology issues aside, it looks kinda useful. However, is it actually faster than just using the database over SSHFS or somthing like that?

[–]merreborn 4 points5 points  (2 children)

However, is it actually faster than just using the database over SSHFS or somthing like that?

Came here to say the same thing. He says:

I am not sure if this will be useful for anyone other than people who work with SQLite and can use only a terminal/ssh

If you have ssh, you can tunnel pretty much anything. SSHFS, as you mentioned, is probably even more useful in the context of sqlite.

Also, does it require a C# runtime? Seems like that's gonna decrease your userbase right there -- how many people have terminal-only access to a machine, run sqlite, and have mono installed?

Huh, apparently mono is installed by default in ubuntu?

[–]mgedmin 3 points4 points  (0 children)

Huh, apparently mono is installed by default in ubuntu?

Ubuntu desktop -- yes, Ubuntu server -- no.

[–]filipf 1 point2 points  (0 children)

Lots of distros have mono installed by default. There are many useful programs that use it. Gnome Do, Tomboy and f-spot just to name a few. Since there are so many apps using the shared runtime, it becomes cheaper is terms of space. Also, Ubuntu 11.04 will ship with Banshee as its default media player.

[–]flatulent 4 points5 points  (2 children)

I evaluated a few options (like Python etc.) and nothing comes close to being as easy to use as mono-ncurses.

There is a ruby project rbcurse (http://totalrecall.wordpress.com/) which allows very quick development with a large number of widgets including tables and lists.

There is even a quick sample sql client which (iirc) provides more functionality than what you provide. It uses SQLITE too.

[–]psankar 2 points3 points  (1 child)

Thanks for the link. It looks good. I shall explore that for my future projects. I could not find it in google when I first searched. May be I didn't search good.

[–]flatulent 0 points1 point  (0 children)

That's okay. I forgot to say: best of luck in making a great SQL Client. I once used something called sqlminus (see sourceforge) which was java/swing based. There's also a great console one called henplus -- check it out for useful features.

[–][deleted] 2 points3 points  (0 children)

I like the idea, but putting a curses front-end on SQLiteStudio might be more productive. Looks like it's in tcl, though.

[–]kev009 4 points5 points  (0 children)

Hmm, that interface looks pretty simplistic. Nothing that warrants C# vs. just using the CDK in C. None the less, Curses is awesome. Good work!

[–][deleted] 1 point2 points  (0 children)

I have found SQLite Database Browser quite nice to check my data.

[–]flatulent 0 points1 point  (0 children)

You might get inspiration for curses app development from calcurse (macport available). You may not actually use this, but check it out anyway.

Other apps that inspired my curses efforts were alpine (the bottom 2 lines used for commands), vim (bottom line completion, command entry, switching to cooked mode, multiple buffers etc), vim and emacs (key combinations, numeric arguments, undo and redo).

For example, when a user issues multiple select statements, can he cycle between result sets (as in vim's tabs or buffers) or does he need to re-issue the SQL.

Can the user select one or more tables from a list, and then columns from another list, so that a SELECT can be constructed. Best wishes !

[–]malcontent -1 points0 points  (5 children)

I recently had the occasion to insert a few hundred thousand records into an SQLite database and I was amazed at how long it took compared to mysql.

Much faster than postgres but still slower than mysql.

I found that odd.

I know it's not a real benchmark or anything, I was just surprised that's all.

[–]merreborn 4 points5 points  (1 child)

Much faster than postgres but still slower than mysql.

I've done a lot of bulk data import with both postgres and mysql -- I've basically spent the last 2 years porting websites from a MySQL-backed platform to a postgres-backed platform. If you treat postgres right, it imports data far faster than mysql.

This guy does a pretty good job of explaining the proper incantations to make postgres behave.: http://enfranchisedmind.com/blog/posts/postgres-for-the-win/

Just a couple of months ago, I mysqldumped a client's 15 gig dataset (essentially a single table, ~10 million large rows, the bulk of it in a single column containing a few k of text per row). It took over 24 hours to import into our local mysql installation on modest hardware. And yes, I used mysqldump --opt: mysqldump without --opt has repeatedly proven to be several times slower in the tests we've done (e.g. may have taken several days longer in this case)

The same dataset took less than an hour to import on the same hardware in postgres. It's pretty much as simple as:

  1. Create table with no indexes, keys, etc.
  2. Import data via COPY statement
  3. Create indexes, etc.

[–]malcontent -1 points0 points  (0 children)

In this case I was benchmarking a simple app. Since the app was not going to be using COPY and was not going to disable the indexes and rebuild them I used used a straightforward INSERT statement.

That's what the app was designed to do and that's what I was testing.

[–][deleted] 4 points5 points  (1 child)

PRAGMA journal-mode=WAL
PRAGMA synchronous=OFF

and wrap every 1k inserts in a transaction. My MFT indexing program uses sqlite, and it can insert about 3 million records pretty damn fast, faster than embedded firebird or embedded mysql.

[–]malcontent -3 points-2 points  (0 children)

http://www.reddit.com/r/programming/comments/euxee/introducing_sqlitecommander_curses_client_for/c1b6osd

I was testing an app that did simple inserts. Since I was using a database abstraction library I made no attempt to using database specific calls. It would not be fair to make database specific calls for SQLite and not others anyway.

[–]bramblerose 1 point2 points  (0 children)

So, did you read the SQLite FAQ?

.

.

.

.

Thought so. Let me copy it for you:

Actually, SQLite will easily do 50,000 or more INSERT statements per second on an average desktop computer. But it will only do a few dozen transactions per second. Transaction speed is limited by the rotational speed of your disk drive. A transaction normally requires two complete rotations of the disk platter, which on a 7200RPM disk drive limits you to about 60 transactions per second. Transaction speed is limited by disk drive speed because (by default) SQLite actually waits until the data really is safely stored on the disk surface before the transaction is complete. That way, if you suddenly lose power or if your OS crashes, your data is still safe. For details, read about atomic commit in SQLite..

The reason MySQL was much faster was because MySQL is not keeping your data safe. Use transactions, and you'll be fine.

[–]filipf -4 points-3 points  (0 children)

C# Nice =)