Vairāk

Neeksistējoša SQL priekšraksta kļūme pēc paziņojumu izpildes no faila ar ArcSDESQLExecute objektu


Kā redzat manā kodā, es atkārtoju un izpildu visus SQL paziņojumus SQL failā, izmantojot ArcSDESQLExecute objektu.

Tas darbojas, bet, kad visi paziņojumi ir izpildīti, objekts atgriež “Nav” (un tādējādielif sde_return == Nepareizi:daļa) norāda uz neveiksmi, un es nezinu, kāpēc.

Ko es daru nepareizi?

Esmu izmantojis pirmo piemēru SQL izpildē, izmantojot ArcSDE savienojumu, lai izveidotu savu kodu.

Mans kods:

importēt arcpy try: sqlFileSt = arcpy.GetParameterAsText (0) destSDE = arcpy.GetParameterAsText (1) arcpy.env.workspace = destSDE sde_conn = arcpy.ArcSDESQLExecute (destSDE) fd = open (sqlFiled () fd.close () sqlFile = "". pievienoties ([s s sqlFile.strip (). splitlines (True), ja s.strip (" r  n"). strip ()]) sql_llist = sqlFile .split (";") sql_llist: sde_return = sde_conn.execute (sql), izņemot izņēmumu kā err: arcpy.AddMessage (err) sde_return = Nepareizi, ja sde_return == True: arcpy.AddMessage ("SQL: { 0} izpildīts. ". Format (sql)) elif sde_return == False: arcpy.AddMessage (arcpy.GetMessages (2)) arcpy.AddMessage (" SQL: {0} neizdevās. ". Formāts (sql)), izņemot Izņēmums kā err: print (err) arcpy.AddMessage (arcpy.GetMessages (2))

Un mana sql faila saturs:

CREATE TABLE "APP_UPDATES" ("OBJECTID" NUMBER (38,0) NOT NULL ENABLE, "DATE_ACT" DATE, "NAME_TABLE" NVARCHAR2 (50), "ELEMENTS_DEL" NUMBER (*, 0), "ELEMENTS_ADD" NUMBER (*, 0 ), "REZULTĀTS" NVARCHAR2 (15), "KĻŪDAS" NCLOB); CREATE TABLE "APP_CONFIG" ("C_KEY" VARCHAR2 (50 BYTE) NOT NULL ENABLE, "C_VALUE" VARCHAR2 (2048 BYTE) NOT NULL ENABLE, "KOMENTĀRI" VARCHAR2 (255 BYTE)); CREATE TABLE "APP_QUERIES" ("NAME" VARCHAR2 (255 BYTE) NOT NULL ENABLE, "QUERY" VARCHAR2 (2048 BYTE) NOT NULL ENABLE, "NOTES" VARCHAR2 (255 BYTE));

Tātad tas bija tik vienkārši, kā pārbaudīt sadalīšanas rezultātā izveidoto sarakstu. Es nebiju ievērojis tukšo virkni saraksta beigās. Tas ir mans “neesošais SQL paziņojums”.

Mainītssql_llist = sqlFile.split (";")uzsql_llist = sqlFile.rstrip (';'). sadalīt (';')un voilà!

Katru dienu mēs uzzinām kaut ko jaunu. To es šodien uzzināju: