sur*_*ive 6 sqlite command-line
作为一名初学程序员,拥有+20小时的Python编码和新手对命令行的熟悉,我开辟了Zed Shaw的"学习SQL困难之路"并很快被难倒.
在练习01中,Zed使用第一个命令创建了第一个表:
sqlite3 ex1.db < ex1.sql
Run Code Online (Sandbox Code Playgroud)
但是,这无法在我的命令行中运行,给出错误消息"-bash:ex1.sql:没有这样的文件或目录." 最初,我忽略了这个推荐的代码并继续:
sqlite3 ex1.db
SQLite version 3.7.15.1 2012-12-19 20:39:10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE person (
...> id INTEGER PRIMARY KEY,
...> first_name TEXT,
...> last_name TEXT,
...> age INTEGER
...> );
Run Code Online (Sandbox Code Playgroud)
在命令行中运行"ls -l"显示:
-rw-r--r-- 1 thefifth staff 2048 Feb 15 15:23 ex1.db
Run Code Online (Sandbox Code Playgroud)
但我想要的却未能得到:
$ ls -l
-rw-r--r-- 1 zedshaw staff 2048 Nov 8 16:18 ex1.db
-rw-r--r-- 1 zedshaw staff 92 Nov 8 16:14 ex1.sql
Run Code Online (Sandbox Code Playgroud)
我用Google搜索并发现这个博客实现了相同的"name.db <name.sql"语法,但是这里的代码也不适用于我.此Stack Overflow也具有类似的语法,但在将.sql转换为sqlite3的上下文中.
具体来说,我想知道这是否是在本机bash终端中使用的"<",并且我无法满足正确使用的某些标准.此外,我不知道创建.sql和.db文件的目的,虽然显然一个比另一个小得多.也许我已经错误地安装了sqlite3,但似乎工作正常.
谢谢你的帮助!
Ant*_*nko 10
sqlite3 ex1.db < ex1.sql
Run Code Online (Sandbox Code Playgroud)
对于上述工作,ex1.sql应该已经存在.<是shell中用于输入重定向的字符.sqlite3在这里启动一个新的或现有的数据库(它将根据需要创建数据库),并从中获取SQL语句ex1.sql,执行它们并相应地进行修改ex1.db.
现在,让我们产生ex1.sql距离ex1.db,你显然想做的事:
sqlite3 ex1.db .dump > ex1.sql
Run Code Online (Sandbox Code Playgroud)
我们再次使用shell重定向工具,现在将输出重定向到ex1.sql.该.dump命令会sqlite写出SQL语句,这些语句将在空数据库中执行时重新创建类似的数据库:重新创建表并填充表INSERT等.
现在你可以转到第1步:
sqlite3 ex1copy.db < ex1.sql
Run Code Online (Sandbox Code Playgroud)
小智 6
| 归档时间: |
|
| 查看次数: |
5485 次 |
| 最近记录: |