我如何导入SQLite db3文件

时间:2011-03-03 00:44:21

标签: php sqlite

很抱歉这个问题,但我从未使用SQLite,我经历了SQLite网站,下载了“预编译的二进制文件”文件,试图使它们可用于我的目的,但我不能,我看到与数据库的工作教程,表。

我的任务是从SQLite获取数据并将它们放入magento mysql DB中。因此,我已经将SQLite数据库转储文件作为.db3文件,txt文件的大小为db转储文件(20110125_SIZE)。

那么如何将其导入SQLite呢?如果你们中的任何一个人使用SQLite3帮助我理解.db3文件,我怎样才能看到他们的记录。

我有sqlite3 db dump作为dbname.db3,

然后我尝试从php连接这个sqllite。这是我从论坛获得的示例代码。

    $db = openDatabase();   
    unset($db);

    function openDatabase() {
        $dbFile = realpath('dbname.db3');
        echo $dbFile . "\n";
        $needDbCreate = !file_exists($dbFile);
        $db = new SQLiteDatabase($dbFile) or die((file_exists($dbFile)) ? "Unable to open" : "Unable to create");
        if($needDbCreate) {

        }
        return $db;
    } 

但我正在致命的例外。

  

致命错误:未捕获的异常   带有消息的'SQLiteException'   'SQLiteDatabase :: _ construct()[sqlitedatabase .-- construct]:   文件已加密或不是   数据库'in   C:\ wamp \ www \ SQLITE \ index.php:23堆栈   追踪:#0   C:\瓦帕\ WWW \ SQLITE \的index.php(23):   SQLiteDatabase-> _construct( 'C:\瓦帕\ WWW \ SQL ...')   1 C:\ wamp \ www \ SQLITE \ index.php(15):openDatabase()#2 {main}抛出   C:\ wamp \ www \ SQLITE \ index.php在线   23

但是当我用PDO尝试相同的sqldump时,我得到了连接。

try {       
        $dbh = new PDO("sqlite:C:\wamp\www\SQLITE\dbname.db3");
        echo 'Db Connected <br/>';

    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }

这里我不知道这个转储中可用的表列表,所以我如何查询它们列表然后从中获取记录。

请帮我解决这个问题,然后连接并从php浏览表格。

  

很抱歉在这里发帖回答   部分,我想强调一下   代码。

由于

2 个答案:

答案 0 :(得分:3)

在安装了SQLite的系统上,通常还会有sqlite3命令行程序。它可以在命令行或交互模式下使用,以转储数据或将其加载到(二进制)数据库文件中。

sqlite3 ./database.file

这将为您提供交互式提示,您可以在其中发出SQL命令或特殊命令,例如.help.dump

还有更多的图形工具,但它们可能对你想做的事情有点过分。

编辑:看到你的回复(目前在答案部分),你的.db3文件似乎不是二进制SQLite3格式,而是转储。那将是一个问题。如果是转储,则必须先将其加载到正确的数据库文件中。

cat yourdump.sql|sqlite3 ./realdb.db3

答案 1 :(得分:0)

call three times 
$rr=exec("sqlite3 database.db \".separator '|'\" ");
$rr=exec("sqlite3 database.db \".import myfile.txt tablename\" ");
$rr= exec ("sqlite3 database.db \"pragma encoding = 'utf-8'\" ");

or 
single line 
$rr=exec("sqlite3 database.db \".separator '|'\" && sqlite3 database.db \"pragma encoding = 'utf-8'\"   && sqlite3 database.db \".import myfile.txt tablename\" ");