解析文本文件中的数据并将其存储在数据库中



首先感谢您提供的所有帮助。

问题是我们接收TXT格式的数据,需要能够将这些数据解析成某种形式的数据库/存储库。

这个想法是每天在_____和____小时之间创建一个包含数据的.txt文件。例如:Newdata20220629.txt"文本格式

然而,这些数据非常难以阅读,并且几乎不可能以原始形式搜索。txt文件是原始的,但是txt文件的第一行包含每行数据的列,例如"名称","日期","文件号",";等

以下行是按这些类别顺序排列的原始数据。例如;约翰·史密斯,6/29/2022,1234123

任何字段中没有数据的列都有逗号,但不包含数据,如;

John Smith,, or,6/29/2022,

所以本质上我想做的是创建一个工具,它可以持续运行,查找"Newdate(date).txt"格式的文件,并根据我上面提到的解析该文本,然后将其存储在一个用户友好的可搜索数据库中。就我个人而言,我认为SQL数据库可能是最简单的方法,但我不知道我应该从哪里开始。

我建议将SQLBulkCopy类(如下所述:https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlbulkcopy?view=dotnet-plat-ext-6.0)与CsvDataReader类(https://joshclose.github.io/CsvHelper/examples/csvdatareader/)结合使用,如下所示。你需要研究文件系统观察者(正如Hursey所说),当一个新文件被写入到你正在监控的文件夹时,让你的应用程序得到通知。

Protected Sub UploadCSV(filePath As String)
' Create CsvDataReader (IDataReader) to use with SqlBulkCopy
Using csvData = New CsvDataReader(New FileStream(filePath , FileMode.Open)
' Reads first record as a header row.
' Name columns based on the values in the header row
csvData.Settings.HasHeaders = True
' Set data types for parsing data
csvData.Columns.Add("varchar") ' Column 1
csvData.Columns.Add("varchar") ' Column 2
csvData.Columns.Add("datetime") ' Column 3
csvData.Columns.Add("decimal(18,2)") ' Column 4
' Create SqlBulkCopy object to import from the CsvDataReader
Using bulkCopy = New SqlBulkCopy("Data Source=.;Initial Catalog=YourDatabase;User ID=Your Usernamesa;Password=YourPassword")
' Table to write to (must already exist).
bulkCopy.DestinationTableName = "YourSQLTable"
' Map CSV column names to SQL columns names
bulkCopy.ColumnMappings.Add("CSV_Column_Name_1", "SQL_Column_1") 
bulkCopy.ColumnMappings.Add("CSV_Column_Name_2", "SQL_Column_2")
bulkCopy.ColumnMappings.Add("CSV_Column_Name_3", "SQL_Column_3")
bulkCopy.ColumnMappings.Add("CSV_Column_Name_4", "SQL_Column_4")
' Do the import
bulkCopy.WriteToServer(csvData)
End Using ' dispose SqlBulkCopy
End Using ' dispose CsvDataReader
End Sub 

这应该取一个。txt文件并写入。csv文件,然后将。csv文件写入SQL数据库/表,只需输入您的服务器信息和文件路径。

导入这些文件以使用

import pandas as pd
import pyodbc

读取txt文件,写入csv文件

read_txt = pd.read_csv('Newdata20220629.txt', delimiter = ',')
write_csv = read_txt.to_csv('Newdata2022029.csv', index = None)

导入CSV

data = pd.read_csv ('C:UsersExampleUserDesktopTestNewdata2022029.csv')   
df = pd.DataFrame(data)

连接SQL Server

connection = pyodbc.connect('Driver={SQL Server};'
'Server=RONSQLEXPRESS;'
'Database=test_database;'
'Trusted_Connection=yes;')
cursor = connection.cursor()

创建表

cursor.execute('''
CREATE TABLE Table_Name (
Name nvarchar(50),
Date nvarchar(50),
Product_ID Int
)
''')

Insert DataFrame to Table

for row in df.itertuples():
cursor.execute('''
INSERT INTO Table_Name (Name, Date, Product_ID)
VALUES (..., ..., ...)
''',
row.Name, 
row.Date,
row.Product_ID
)
connection.commit()

相关内容

最新更新