本demo不存在太大的实用价值,仅作为学习powershell的一个例子
0.0.1. 前言
之前有涉及一个“将大文件导入mysql”的任务,用python时间太慢,而直接Load data+ dump 总是出错(玄学)。
因此想用powershell将txt数据转化为csv再写进去。
0.0.2. 文件格式化
原始数据需要先经过清洗,之后在对数据进行格式化
- 清理null与404
1 | gc train_data.txt -encoding UTF8|where {$_ -notmatch "(null)|(404\s)"} |Out-File result.txt -encoding UTF8 |
格式化
1
2
3
4
5
6
7$fullText=gc .\result.txt -encoding UTF8|where {!([string]::IsNullOrWhiteSpace($_))}
$fullText=$fullText -replace '\t','\b'
$obj=$fullText|foreach{$tokens=$_.split('\b',[StringSplitOptions]::RemoveEmptyEntries)
'"{0}"' -f [string]::Join('","',$tokens)
} | ConvertFrom-Csv
-f: 相当于格式化 -format(大概)
注意:
- csv默认用逗号分割,但若原文中有逗号,在处理时应该更换划分符号
0.0.3. 适应主键去重
- news表
1 | $obj |Sort-Object -Property newsid -Unique|Select-Object -Property newsid,title,publishtime,content|Export-Csv -NoTypeInformation result1.csv -Encoding UTF8 |
- result1.csv:

0.0.4. 导入Mysql
1 | mysql --local-infile -u root -p |
如此处理过的数据插入相当快,用python十几分钟的如今只用三四秒。