我有一个python脚本,可以从MySQL数据库中提取查询信息。
if 'IMPALA_AUDIT' in table:
query = "SELECT ID, EVENT_TIME, ALLOWED, SERVICE_NAME,
lower((REPLACE(USERNAME,'@UED.NET', ''))), IMPERSONATOR, IP_ADDR,
OPERATION, QUERY_ID, SESSION_ID, STATUS, DATABASE_NAME, OBJECT_TYPE,
TABLE_NAME, PRIVILEGE, REPLACE(REPLACE(OPERATION_TEXT,CHAR(X'0D'),'
'),CHAR(X'0A'),' ') FROM " + table + ";"
pull.create_data_file(query, 'IMPALA_AUDIT.DATA1')
我正在尝试将OPERATION_TEXT的结果限制为10个字符。 这就是我尝试过的:
REPLACE(REPLACE LEFT((OPERATION_TEXT, CHAR(X'0D'),' '),10),CHAR(X'0A'),' ')
和其他几个类似的变化没有运气。
答案 0 :(得分:1)
根据您的问题,不清楚为什么LEFT(CONVERT(OPERATION_TEXT USING utf8),10)
或LEFT(UNHEX(OPERATION_TEXT),10)
无法返回您想要的结果。 here is a link to the relevant documentation on CONVERT。 Here's the link for UNHEX
我很确定你的错误来源并没有转义你的十六进制格式表示中的单引号,这不是MySQL的方法。
答案 1 :(得分:0)
我能够用
限制输出LEFT(REPLACE(REPLACE(OPERATION_TEXT,CHAR(X'0D'),' '),CHAR(X'0A'),' '),5)