많은 수의 .mdb 파일 (Microsoft Access db-files)이 있습니다. 첫 번째 필드 (또는 열)의 이름은 MyField1
입니다. 그러나 파일이 손상되어 실제 필드 이름이 \ufeffMyField1
이거나 다른 말로하면 실제 필드 이름 앞에 0xFEFF
이 붙습니다..mdb 필드 이름에서 이상한 문자 제거
나는 pyodbc-명령 colname
가 errouneous 필드 이름입니다
cursor.execute("UPDATE MyTable SET NewField=" + colname + ";")
를 사용하여 NewField
에 \ufeffMyField1
에서 문제의 필드를 복사하기 위해 노력하고있어
값을 (NewField
이 이미 존재한다고 가정) colname
은 pyodbc와 같은 것을 사용하여 가져옵니다.
rows = cur.columns(table='MyTable')
for row in rows:
if("MyField1" in row.column_name):
colname=row.column_name
UPDATE...
명령을 실행하면 여기에 설명 된대로 https://support.microsoft.com/en-us/help/815281/-file-sharing-lock-count-exceeded-error-message-during-large-transacti과 같이 MaxLocksPerFile Ms 액세스 매개 변수가 너무 낮은 드라이버 오류가 발생합니다. 그러나 프로그램에서 하나의 파일 만 여는 동안 MaxLocksPerFile 매개 변수를 몇 배 증가 시키므로 실제 문제가 아닌 것 같습니다.
문제없이 MS Access에서 파일을 열고 gui의 필드 이름을 바꿀 수 있습니다. 나는 gui에서 여분의 비트가 일반적인 인코딩과 일치하지 않기 때문에 필드의 이름이 잘못 지정되었다고 생각하는 방법을 찾지 못했습니다.
마지막으로, 필자는 제 질문으로 : 원시 바이트를 pyodbc 명령으로 전달할 수 있습니까?
다른 방법으로 여분의 문자를 제거하는 실제 문제를 해결하려면 의견을 제시해주십시오. (필드 이름에서 모든 비 ASCII 문자를 지우는 것과 같습니다)
COM 및 DAO를 사용하여 열의 이름을 바꾸려고합니다. 당신이 아마도 잘못된 이름으로 필드를 참조 할 수 없기 때문에 이것이 SQL과 ODBC를 통해 가능할지는 의문입니다. 당신은 필드 이름을'[]'괄호로 묶어 문자가 아닌 문자를 처리하도록 시도 할 수있다. –
여기에 .mdb 파일이 없지만 열 이름의 문자열이 파일의 원시 이진 파일에 나타나기 때문에 단순히 파일을 바꿀 수 있는지 확인 했습니까? – Jeronimo
필드 이름과 연결된 방식으로 확인했으나 찾지 못했습니다. 결정적으로 말하기에 충분하지 않은 시간을 보냈다 – Schaki