3

我一直在尝试通过在 Learn SQL the Hard Way 网站上做练习来学习 SQL。我在桌面上的文件夹中创建了一个名为 ex1.sql 的文件,并将所有 sqlite3 的东西放在 PATH 中。但是,我使用的是 Windows Powershell,无法执行以下命令:

sqlite3 ex1.db < ex1.sql

我在 Powershell 终端中收到此错误:

At line:1 char:16
+ sqlite3 ex1.db < ex1.sql
+                ~
The '<' operator is reserved for future use.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupport

所以,我猜 '<' 只能用于在 Unix 操作系统上重定向。我试图在 powershell 中找到一个等效的命令,但我还没有找到一个。如果有人遇到过这个问题或知道如何将 .sql 文件重定向到 .db,那就太好了。

4

2 回答 2

4

你可以试试:

get-content ext1.sql | sqllite3 ext1.db

这篇文章很好地讨论了 Powershell 中的遗留重定向问题和各种解决方法:

http://blogs.technet.com/b/heyscriptingguy/archive/2011/07/16/working-around-legacy-redirection-issues-with-powershell.aspx

于 2013-06-12T23:33:51.963 回答
2

在Zed Shaw 的 Learn SQL the Hard Way on Powershell之后,我遇到了这个问题。他在Unix上使用的命令是

sqlite3 ex1.db < ex1.sql

Chad 的回答非常适合 Powershell。Zed 使用'<' 重定向从 .sql 文件中读取 CREATE 语句并使用它作为 .db 文件的输入。

在这个Powershell示例中,Chad 正在读取 .sql 文件的内容并将其“通过管道传输”到 .db 文件中。

你也可以输入

gc ex1.sql | sqlite3 ex1.db

我希望这可以帮助任何在跟随 Zed 时偶然发现这篇文章的人,比如我!感谢 Zed 和乍得!

于 2014-08-14T13:49:06.147 回答