【问题标题】:How can i import SQLite db3 file如何导入 SQLite db3 文件
【发布时间】:2011-03-03 00:44:20
【问题描述】:

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

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

那么我如何将它导入 SQLite。如果你们中的任何人使用过 SQLite3,请帮助我理解 .db3 文件以及如何查看其中的记录。

我已将 sqlite3 db 转储为 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]: 文件已加密或不是 数据库'在 C:\wamp\www\SQLITE\index.php:23 堆栈 跟踪:#0 C:\wamp\www\SQLITE\index.php(23): SQLiteDatabase->_construct('C:\wamp\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 连接并浏览表格。

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

谢谢

【问题讨论】:

  • 编辑了我的回复以涵盖应该编辑到原始问题中的问题部分:)

标签: php sqlite


【解决方案1】:

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

sqlite3 ./database.file

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

还有更多的图形工具,但对于您想要做的事情来说,它们可能有点矫枉过正。

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

cat yourdump.sql|sqlite3 ./realdb.db3

【讨论】:

  • @Ela:好吧,所以文件是一个实际的二进制格式 SQLite3 数据库?
【解决方案2】:
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\" ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多