很抱歉这个问题,但我从未使用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浏览表格。
很抱歉在这里发帖回答 部分,我想强调一下 代码。
由于
答案 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\" ");