我想重新格式化我的数据以填充数据库。
这是我要重新格式化的9GB 60列CSV文件的示例。
DATE,TIME,CRSPTM1,CRSPME1,CRSPLC1,CRSPMI1,CRSPSC1,CRSPMC1,CRSPSX1,CRSPTMT
20140303,9:30:00,1407.02,1394.69,1399.76,1426.59,1444.68,1498.23,1460.91,1495.53
20140303,9:30:01,1403.34,1391.57,1396.47,1422.47,1439.05,1488.27,1454.67,1491.61
20140303,9:30:02,1402.23,1390.97,1395.69,1420.78,1435.81,1486.59,1451.49,1490.43
20140303,9:30:03,1402.23,1391.01,1395.72,1420.72,1435.65,1486.62,1451.37,1490.43
20140303,9:30:04,1402.31,1391.15,1395.83,1420.70,1435.57,1486.63,1451.28,1490.52
20140303,9:30:05,1402.13,1390.95,1395.64,1420.58,1435.42,1486.56,1451.10,1490.33
20140303,9:30:06,1402.00,1390.84,1395.50,1420.29,1435.32,1486.58,1450.99,1490.18
20140303,9:30:07,1401.96,1390.83,1395.47,1420.15,1435.24,1486.47,1450.91,1490.14
20140303,9:30:08,1401.75,1390.55,1395.24,1420.17,1435.11,1486.27,1450.76,1489.92
前两个字段是,例如20140303,9:30:00
,我需要将其更改为MySQL DateTime格式
DATETIME类型用于包含日期和时间部分的值。 MySQL在' YYYY-MM-DD HH:MM:SS'中检索并显示DATETIME值。格式。
我在几篇文章中看到Perl有一个DateTime
模块,并希望使用它。
答案 0 :(得分:2)
此处不需要DateTime
模块。这是简单的文本重新格式化
perl -pe 's/^(\d\d\d\d)(\d\d)(\d\d),/$1-$2-$3 /' myfile.csv
答案 1 :(得分:-1)
正如我所看到的,你实际上需要改变每一行的前8个字符(但是
第一)。您需要在年度部分(4个字符)和月份之后插入<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="style/style.css">
<title>Hacene Nasseur Portfolio</title>
</head>
<body>
<style>
.container-fluid {
min-height: 100%;
background: #f9f9f9;
}
#navbar {
overflow: hidden;
background-color: #c2d6c7;
font-family: consolas;
}
#navbar a {
float: left;
display: block;
text-align: center;
text-decoration: none;
}
.pimg1 {
min-height: 100%;
background-image: url('https://startuplab.io/images/webdev-roadmap-2-html-js-css.jpeg');
}
</style>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Hacene Nasseur Portfolio</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="index.html">Home</a></li>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
</ul>
</div>
</nav>
<script src="css/bootstrap.min.js"></script>
</body>
</html>
个字符
部分(另外2个字符)。
假设您的输入文件是 inp.txt ,您可以使用以下单行脚本:
-
为了避免创建任何额外的变量,我使用了替换
非破坏性( -r )选项,因此perl –lne "print s/^(\d{4})(\d{2})(\d{2})/$1-$2-$3/r" inp.txt
指令的结果
是替换结果(不是替换的数量)。
第一行(列名)不会更改,因为它不匹配 使用正则表达式。
如果要将结果存储在另一个文件中,请将s/.../.../
添加到上述命令中。
如果有些事情仍然不清楚,你可能会读一下: