• 主页
  • 相册
  • 随笔
  • 目录
  • 存档
Total 244
Search AboutMe

  • 主页
  • 相册
  • 随笔
  • 目录
  • 存档

实验:powershell文本格式化及mysql导入

2019-05-30

本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
2
3
mysql --local-infile -u root -p 

load data infile 'xx.csv' into table xx fields terminated by ',' OPTIONALLY ENCLOSED BY '"' lines terminated by '\r\n' IGNORE 1 ROWS;

如此处理过的数据插入相当快,用python十几分钟的如今只用三四秒。

  • Lab
  • Shell
  • Sql
  • Lab
flask实现图片上传处理
bs4-pymsql-flask结构搭建
© 2024 何决云 载入天数...