PHP脚本

时间:2015-10-01 13:08:29

标签: php postgresql

我是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'

我还验证了查询中字段的拼写与数据库中字段的拼写(和大小写)匹配。我没有设置这个数据库,但可以完全访问它。

1 个答案:

答案 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();