我正在尝试将postgres转储导入sqlite3数据库。 现在 pg_dump 将数据库名称添加到表达式中,这对sqlite3不利。
CREATE TABLE dbname.table
是否可以告诉sqlite3忽略数据库名称? 下一个解决方案是尝试编写可修改sql文件的regexp,但我不是regexp魔术师,我从以下方面获得了一些东西:
printf "\nCREATE TABLE dbname.data;\nINSERT INTO dbname.data VALUES (\"the data in dbname.\")\n" | sed -e '/^CREATE TABLE/s/dbname.//g' -e '/^INSERT INTO/s/dbname.//g'
但这是不正确的原因,因为我只想替换第一次出现的情况...
你能给我一些建议吗?
答案 0 :(得分:0)
您实际上不必更改SQL语句文件:
$ sqlite3
sqlite> ATTACH 'your_database.db' AS dbname;
sqlite> .read dump_file.sql
ATTACH将使用模式名称dbname
打开一个数据库,以便dbname.tablename
会引用它。