将本地 PLCnext 数据记录器中的数据库转换为 CSV 文件
记录工业应用中的值是许多客户的主要特征,在某些应用中变量的数量可能非常多,因此需要一种本地且简单的方法来配置此数据记录。
下面我们将深入了解本机数据记录服务组件,看看我们如何从该服务生成 CSV 文件。
您可以在这些链接中找到有关数据记录服务组件的更多信息:
- 配置数据记录器并从 OPC UA 历史访问中使用它
- 实时数据记录器 - PLCnext 信息中心
您已经配置了数据记录会话,您将拥有一个包含所有变量记录值的 *.db 文件。这个 *.db 文件是一个数据库文件,但是如果我们想浏览这些值,这种格式需要像 Sqlite3 或 DB Browser 这样的工具。
许多客户已经熟悉 *.csv 文件,因此我们将了解如何将此数据库导出为 csv 文件。每个 PLCnext 控制器中的 Sqlite3 工具都提供了进行此导出所需的所有工具。
创建数据库时,我们可以为数据库设置我们想要的名称,但我们不能为数据库中包含这些值的表设置特定名称。幸运的是,Sqlite3 工具可以通过显示数据库中存在的表来帮助我们,使用命令“Sqlite3
您可以在 Sqlite3 的帮助页面或此页面中找到所有具体命令:Sqlite3。
当我们知道表名后,我们就可以从这个表中选择所有数据,并将这些数据导出到一个csv文件中。
为了简化这个过程,我将链接您两个脚本以从数据库中导出。
当然,您可以根据需要调整脚本!
很遗憾,我们无法上传 *.sh 文件,所以下面你会看到这两个文件的内容。
一、ISO8601 Timestamp 格式的文件:
ExportSQL2CSV_ISO.sh
#!/bin/bash name_of_database="${1:?Missing database}" name_of_database_no_ext=${name_of_database::-3} #Get the name of the table name_of_table=$(sqlite3 $name_of_database .ta) #Get the DateTime of the first entry to name the output file DateTime=$(sqlite3 $name_of_database "SELECT strftime('%Y_%m_%d_%H_%M_%S',Timestamp) from $name_of_table limit 1;") #Create the filename output_filename=${name_of_database_no_ext}_${DateTime}.csv #Make the export to the csv file sqlite3 -header -csv -separator ";" $name_of_database "SELECT * from $name_of_table;"\ > $output_filename
以及 RAW Timestamp 格式的第二个文件:
ExportSQL2CSV_RAW.sh
#!/bin/bash name_of_database="${1:?Missing database}" name_of_database_no_ext=${name_of_database::-3} #Get the name of the table name_of_table=$(sqlite3 $name_of_database .ta) #Get the DateTime of the first entry to name the output file DateTime=$(sqlite3 $name_of_database "SELECT strftime('%Y_%m_%d_%H_%M_%S',(Timestamp - 4611686018427387904)/10000000 - 62135596800,'unixepoch') from $name_of_table limit 1;") #Create the filename output_filename=${name_of_database_no_ext}_${DateTime}.csv #Make the export to the csv file sqlite3 -header -csv -separator ";" $name_of_database "SELECT \ strftime('%Y-%m-%d %H:%M:%f',(Timestamp - 4611686018427387904)/10000000 - 62135596800,'unixepoch') AS Time,\ * from $name_of_table;"\ > $output_filename
由于这些文件将是脚本,请不要忘记在文件上添加可执行标志:
chmod +x ExportSQL2CSV_*.sh
然后我们就可以调用脚本了。这是脚本的调用:
./ExportSQL2CSV_ISO.sh <PathToDatabase>
脚本完成后,您将找到一个 CSV 文件,其中包含您的数据库名称和数据库第一个条目的 DateTime,如下所示:
您现在拥有一个 CSV 文件,其中包含您使用本机 DataLogger 服务组件记录的所有数据。
您可以通过使用 cron
工具每小时或每天自动创建此文件来更进一步 .
如果您有任何问题或意见,请随时与我们联系!
工业技术