我在一个文件user.sql中有以下SQL:
CREATE TABLE user ( user_id INTEGER PRIMARY KEY, username varchar(255), password varchar(255) );
但是,执行以下命令时:
sqlite3 my.db < user.sql
生成以下错误:
Error: near line 1: near ")": syntax error
我希望保持SQL原样,因为文件将被检入源代码控制,并且将更加可维护和可读,就像现在一样.SQL可以跨越这样的多行,还是需要将它们全部放在同一行?
我意识到这不是你问题的直接答案.正如布莱恩所提到的,这可能是一个愚蠢的平台问题.
如果您通过Python与SQLite交互,您可能会避免大多数特定于平台的问题,并且您可以获得有趣的事情,例如datetime列:-)
像这样的东西应该工作正常:
import sqlite3 qry = open('create_table_user.sql', 'r').read() conn = sqlite3.connect('/path/to/db') c = conn.cursor() c.execute(qry) conn.commit() c.close() conn.close()
我有完全相同的问题.
然后我注意到,我的编辑器(Notepad ++)报告了行结尾的Macintosh格式.
将eols转换为Unix风格将脚本文件转换为sqlite3理解的格式.