尝试从sql文件中删除数据库名称

时间:2019-02-07 10:14:50

标签: regex sed sqlite

我正在尝试将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'

但这是不正确的原因,因为我只想替换第一次出现的情况...

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

您实际上不必更改SQL语句文件:

$ sqlite3
sqlite> ATTACH 'your_database.db' AS dbname;
sqlite> .read dump_file.sql

ATTACH将使用模式名称dbname打开一个数据库,以便dbname.tablename会引用它。