0

これはtx.sqlです

 DECLARE @Cnt INT,
    @ParticipantID UNIQUEIDENTIFIER

SELECT ParticipantID INTO #ids
FROM dbo.rbd_Participants
/* sun */
WHERE surname='Пупкин'

これはpythonスクリプトです

with open('tx.sql', 'r') as f:
    script = f.read().decode('utf8') 
script = re.sub(r'\/\*.*?\*\/', '', script, flags=re.DOTALL)multiline comment
script = re.sub(r'--.*$', '', script, flags=re.MULTILINE)  line comment

sql = []
do_execute = False
for line in script.split(u'\n'):
    line = line.strip()
    if not line:
        continue
    elif line.upper() == u'GO':
        do_execute = True

    else:
        sql.append(line)
        do_execute = line.endswith(u';')
        #print line


cur.execute(u'\n'.join(sql).encode('utf8'))  

問題の行:script = f.read().decode('utf8')

UnicodeDecodeError: 'utf8' コーデックは位置 134 のバイト 0xc0 をデコードできません: 無効な開始バイト

私が試してみました

script = f.read().decode('cp1251')

しかしライン

cur.execute(u'\n'.join(sql).encode('utf8')) 
print (u'\n'.join(sql)).encode('utf8')
DECLARE @Cnt INT,
@ParticipantID UNIQUEIDENTIFIER
SELECT ParticipantID INTO #ids
FROM dbo.rbd_Participants
WHERE surname='РџСѓРїРєРёРЅ'

正しいラインの作り方は?

WHERE姓='РџСѓРїРєРёРЅ'

文字列が存在する必要があります

WHERE姓='パーキンキン'

4

1 に答える 1