我是PostgreSQL世界的新手,但我在PHP和MySQL方面都很老套。
我有一个PHP脚本,可以创建和(应该)对PostgreSQL DB执行查询。连接没问题,我可以毫无问题地恢复数据,但我的INSERT语句仍然失败。以下是脚本创建的一个查询的示例:(所有信息都是公共记录的问题,因此这是真实数据)
INSERT INTO
leads_lead ( EIN, NAME, ICO, STREET, CITY, STATE, ZIP, GROUP, SUBSECTION, AFFILIATION, CLASSIFICATION, RULING, DEDUCTIBILITY, FOUNDATION, ACTIVITY, ORGANIZATION, STATUS, TAX_PERIOD, ASSET_CD, INCOME_CD, FILING_REQ_CD, PF_FILING_REQ_CD, ACCT_PD, ASSET_AMT, INCOME_AMT, REVENUE_AMT, NTEE_CD, SORT_NAME)
VALUES ('010520599','BLUE KNIGHTS MOTORCYCLE CLUB','% DOUGLAS LAMPLUGH','216 HEATHER LN','FAIRHOPE','AL','36532-7105','0000','10','3','1000','201402','2','00','000000000','5','01','201412','0','0','02','0','12','0','0','0','Y42','AL II');
我得到的错误说明:
ERROR: syntax error at or near "GROUP"
LINE 1: ..._lead ( EIN, NAME, ICO, STREET, CITY, STATE, ZIP, GROUP, SUB...
这是在我的控制台输出中,在Ubuntu机器上返回的。
知道为什么会失败吗?试图在psql控制台中运行它会得到相同的结果,一个克拉指向GROUP中的'G'
我还验证了查询中字段的拼写与数据库中字段的拼写(和大小写)匹配。我没有设置这个数据库,但可以完全访问它。
答案 0 :(得分:2)
您必须将GROUP括在双引号中以阻止它被解释为关键字
string constr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", path);
using (OleDbConnection conn = new OleDbConnection(constr))
{
conn.Open();
OleDbCommand command = new OleDbCommand("Select * from [Sheet1$]", conn);
OleDbDataReader reader = command.ExecuteReader();