首页 > 解决方案 > 从 SQL Server 导入的 CSV 文件在格式化日期时间后丢失数据

问题描述

我有一个从 SQL Server 导出的大型 CSV 文件(1.1G),我想在 python 中对其进行预处理,但是这样做有一些问题。原始 CSV 文件的日期时间值如下所示00:07.5, 00:08.3, 00:48.7,因此我必须1/12/2015 12:00:07 am, 1/12/2015 12:00:08 am, 1/12/2015 12:00:49 am通过格式化整个列来手动将它们转换为 excel 格式以使其d/m/yy h:mm:ss格式可识别。但我注意到文件大小已经缩小到36.6 MB1.1G. 我收到了 excel 通知:可能的数据丢失:如果将此笔记本保存为逗号分隔 (.csv) 格式,则某些功能可能会丢失。要保留这些功能,请将其保存为 Excel 文件格式。

我尝试将文件保存为 csv 和 xlsx 格式,但是当我在 python 中读取文件并检查它们时,两者都导致数据框中的行丢失shape:(26137666, 4)(original csv file) vs (1048575, 4) (xlsx 文件)。

我的原始 excel 文件日期时间数据看起来与类似。

我的问题是:

  1. 如何防止数据丢失?

  2. 是否可以在python中转换日期时间列格式?

标签: pythonsql-serverexcelcsv

解决方案


来自 Excel,而不是 python。

我发现这个主题正在研究。有一种方法可以将所有这些数据复制到 Excel 数据表中。(我之前有一个 5000 万行 CSV 文件的问题)如果有任何格式,可以包含额外的代码。尝试这个。

Sub ReadCSVFiles()

Dim i, j As Double
Dim UserFileName As String
Dim strTextLine As String
Dim iFile As Integer: iFile = FreeFile

UserFileName = Application.GetOpenFilename
Open UserFileName For Input As #iFile
i = 1
j = 1
Check = False

Do Until EOF(1)
    Line Input #1, strTextLine
    If i >= 1048576 Then
        i = 1
        j = j + 1
    Else
        Sheets(1).Cells(i, j) = strTextLine
        i = i + 1
    End If
Loop
Close #iFile
End Sub

稍后您将在一个非常重的文件中获取所有数据,因此只需将其拆分即可。


推荐阅读