[英]Parsing data from a text file and storing it in a database
首先感谢您提供的任何和所有帮助。
我们接收 TXT 格式的数据并且需要能够将这些数据解析到某种形式的数据库/存储库中的问题。
这个想法是每天在 _____ 和 ____ 小时之间创建一个包含数据的 .txt 文件。 例如文本格式的“Newdata20220629.txt”。
但是,这些数据极难阅读,几乎不可能以原始形式搜索。 txt 文件是原始文件,但 txt 文件的第一行包含每行数据的列,例如“名称、日期、文件编号”等。
以下行是按这些类别顺序排列的原始数据。 例如; 约翰·史密斯,2022 年 6 月 29 日,1234123
字段中没有数据的任何列都有逗号,但不包含数据,例如;
约翰·史密斯,或 2022 年 6 月 29 日,
所以基本上我想做的是创建一个工具,它会持续运行以“Newdate(date).txt”格式查找文件,并根据我上面提到的内容解析该文本,然后将其存储在用户中-友好和可搜索的数据库。 就个人而言,我认为 SQL 数据库可能是最简单的方法,但不知道我应该从哪里开始。
我建议结合使用SQLBulkCopy
类(如此处所述: https ://docs.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:\Users\ExampleUser\Desktop\Test\Newdata2022029.csv')
df = pd.DataFrame(data)
连接到 SQL Server
connection = pyodbc.connect('Driver={SQL Server};'
'Server=RON\SQLEXPRESS;'
'Database=test_database;'
'Trusted_Connection=yes;')
cursor = connection.cursor()
创建表
cursor.execute('''
CREATE TABLE Table_Name (
Name nvarchar(50),
Date nvarchar(50),
Product_ID Int
)
''')
将 DataFrame 插入表
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.