【发布时间】:2019-09-29 03:14:15
【问题描述】:
我使用以下方法从数据库中导出了两个字段:name 和 header:
SELECT name, header
INTO OUTFILE '/var/lib/mysql-files/myfile.txt'
FIELDS TERMINATED BY '<xx>'
LINES TERMINATED BY '\n'
FROM mytable;
一条记录有这个header 值:
{'Date': 'Fri, 19 Apr 2019 07:23:14 GMT', 'Server': 'Apache', 'Vary': 'Qualys-Scan'、'Strict-Transport-Security': 'max-age=31536000;includeSubDomains;preload', 'Set-Cookie': 'ASP.NET_SessionId=ivoa5bhet0s2ygkylmimvkie;路径=/;安全的; HttpOnly;SameSite=严格, SC_ANALYTICS_GLOBAL_COOKIE=12f133ea5080403692b4ce458fd1a540; 到期=格林威治标准时间 2029 年 4 月 19 日星期四 07:23:14;路径=/;安全的; HttpOnly;SameSite=严格, SC_ANALYTICS_SESSION_COOKIE=336B597E7A534D6393C57DF11E047484|1|ivoa5bhet0s2ygkylmimvkie; 路径=/;安全的; HttpOnly;SameSite=严格, incap_ses_885_270026=cDp/VlO1AHgshF9F6SZIDGJ3uVwAAAAAg7DwpecyehBCyhXgoYO5GA==; 路径=/;域=.zurich.co.uk,___utmvmykuNyVY=dlNaoEsuXSO;路径=/; 最大年龄=900,___utmvaykuNyVY=nWJx01KvGT;路径=/;最大年龄=900, ___utmvbykuNyVY=JZy XEtOwalQ:PtR;路径=/; Max-Age=900', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1;模式=块','缓存控制': '私人','内容类型':'文本/ html;字符集=utf-8','保持活动': 'timeout=5, max=10', 'Connection': 'Keep-Alive', 'X-Iinfo': '8-3925806-3925807 NNNN CT(73 151 0) RT(1555658593583 5) q(0 0 3 0) r(6 6) U5','X-CDN':'封装','内容编码':'gzip', “传输编码”:“分块”}
导出为:
https://z.co.uk
<xx>{'Date': 'Fri, 19 Apr 2019 07:23:14 GMT', '服务器':'Apache','Vary':'Qualys-Scan', “严格的运输安全”: 'max-age=31536000;includeSubDomains;preload', 'Set-Cookie': 'ASP.NET_SessionId=ivoa5bhet0s2ygkylmimvkie;路径=/;安全的; HttpOnly;SameSite=严格, SC_ANALYTICS_GLOBAL_COOKIE=12f133ea5080403692b4ce458fd1a540; 到期=格林威治标准时间 2029 年 4 月 19 日星期四 07:23:14;路径=/;安全的; HttpOnly;SameSite=严格, SC_ANALYTICS_SESSION_COOKIE=336B597E7A534D6393C57DF11E047484|1|ivoa5bhet0s2ygkylmimvkie; 路径=/;安全的; HttpOnly;SameSite=严格, incap_ses_885_270026=cDp/VlO1AHgshF9F6SZIDGJ3uVwAAAAAg7DwpecyehBCyhXgoYO5GA==; 路径=/;域=.zurich.co.uk,___utmvmykuNyVY=dlNaoEsuXSO;路径=/; 最大年龄=900,__utmvaykuNyVY=nWJx01KvGT;路径=/;最大年龄=900, ___utmvbykuNyVY=JZy
并在新行中(请注意,它以选项卡开头,这就是堆栈溢出将其显示为代码的原因):
XEtOwalQ: PtR; path=/; Max-Age=900', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'Cache-Control':'private', 'Content-Type': 'text/html;字符集=utf-8','保持活动': 'timeout=5, max=10', 'Connection': 'Keep-Alive', 'X-Iinfo': '8-3925806-3925807 NNNN CT(73 151 0) RT(1555658593583 5) q(0 0 3 0) r(6 6) U5','X-CDN':'封装','内容编码':'gzip', “传输编码”:“分块”}
为什么会这样?如何避免这种情况?
这给我带来了很大的问题,并出现在许多其他记录中(但不是全部)。
我需要使用 python 读取文件行,python 将截断的行识别为两行而不是一行,这使得这些行不符合我使用 python 处理的行格式,并且我收到错误消息out of index .
【问题讨论】:
-
也许你在那个地方真的有行尾
\n? -
如何忽略\n,只考虑以
}结尾的结束行 -
在文件中,
\n字符始终被视为行尾。如果对你来说不是很重要,你可以用REPLACE语句将\n替换为空格或本列中的内容。 -
我更喜欢导出到文件后替换。知道如何在 Linux 中执行此操作吗?
标签: python mysql database mysql-workbench select-into-outfile