Python 限制mysql查询中的str字符
我有一个python脚本,可以从MySQL数据库中提取查询信息Python 限制mysql查询中的str字符,python,mysql,Python,Mysql,我有一个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, OB
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')
我正在尝试将操作文本的结果限制为10个字符。
这就是我尝试过的:
REPLACE(REPLACE LEFT((OPERATION_TEXT, CHAR(X'0D'),' '),10),CHAR(X'0A'),' ')
从你的问题来看,不清楚为什么
左(转换(使用utf8的操作文本),10)或左(UNHEX(操作文本),10)
没有返回你想要的结果
我敢肯定,您的错误源不是在十六进制格式的表示中转义单引号,这不是MySQL的方法。我可以用
LEFT(REPLACE(REPLACE(OPERATION_TEXT,CHAR(X'0D'),' '),CHAR(X'0A'),' '),5)
OPERATION\u TEXT
的列定义是什么?您是否正在尝试替换空白字符,而不是将其计入10?您是否收到错误消息或不喜欢的结果?这是我的错误:_mysql_exceptions.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的mysql服务器版本对应的手册,以了解可在第1行的IMPALA_AUDIT_EVE中使用的接近“LEFT”((OPERATION_TEXT,CHAR(X'0D'),''),5),CHAR(X'0A'),'')的正确语法。”)这是我原始查询的结果。操作测试从插入开始:2^\1510895172000^\1^\impala^\a00848^\172.19.22.11^\DML^\d24796babd93be63:d8d6e6a6814a4093^\1548e99a9a4101c1:1cb88b5a8c3830ab^\ed撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴撴25780,所以我猜操作_文本是以十六进制格式存储的?或者你想要十六进制字符串的前十个字符?我想我想要十六进制字符串的前十个字符。我没有写原始脚本,十六进制字符对我来说是新的。基本上,我希望操作文本的结果是“插入到”而不是“插入到ed\u客户\u接触点…等等”