基于VFP9语言编程的超大文件存入MS-SQL的实现研究

2020-09-02 06:16
无线互联科技 2020年11期
关键词:程序代码分块字节

曾 红

(四川省自贡市第一人民医院,四川 自贡 643000)

在计算机网络应用中,会经常用文件传输协议(File Transfer Protocol,FTP)来传递文件,有时会感到很不方便,于是,本文用MS-SQL数据库来传递,编写应用程序,把各类文件存储到数据库服务器中,需要时再从数据库中还原文件。

实现思路:采用microsoft SQL数据库建立一个表,由字段自动递增(Identity,ID)、文件名称(nvarchar字符类型)和文件内容(text备注类型)字段组成,开发语言采用Visual FoxPro 9。

1 MS-SQL数据库结构

(1)数据库名称为文件管理。(2)IP地址:192.168.0.100。(3)账号:sa。(4)密码:123456。(5)数据库建表命令为CREATE TABLE文件(ID int IDENTITY(1,1)NOT NULL,文件名称nvarchar(100),文件内容text NULL)ON [PRIMARY]TEXTIMAGE_ON[PRIMARY]。

2 把文件存储到SQL中的程序代码

rem 创建SQL数据库链接[1]

con=sqlstringconnect(“driver=SQL Server;Server=192.168.0.100;Uid=sa;pwd=123456;database=文件管理”)rem 找到需要存储的文件

rem 关闭数据链接,完成存储

SQLDISCONNECT(con)

3 从SQL中还原文件的代码

rem 创建SQL数据库链接

con=sqlstringconnect(“driver=SQL Server;Server=192.168.0.100;Uid=sa;pwd=123456;database=文件管理”)

G=SQLEXEC(con,”select * from 文件”,”文件”)

rem 关闭数据链接

SQLDISCONNECT(con)

select 文件

rem 把文件内容进行base64反编码

content=STRCONV(文件内容,14)

filename=ALLTRIM(文件名称)

rem 还原文件

STRTOFILE(filename, content)

4 实际应用中遇到的问题

实际运用中,经常遇到大文件,比如视频、压缩包等,很多文件大小都在10 M以上,有时可能达到几百兆、几千兆以上。运行时,当文件换成base64编码后,数据长度如果超过16 777 184字节,程序就会自动切断超长部分,在还原文件时,长度就变小,还原的文件肯定就是错误的。

5 采用分块存储技术解决超大文件的存储问题

要解决上面的问题,就必须修改程序,通过反复思考,决定把文件分成若干块,再分别存储到数据库中,即分块存储技术,需要还原时,再把这些块组合起来,即完成还原文件。

对上面程序代码进行改进,打开文件后,按照12 000 000字节大小分块,再转换成base64编码不会超过16 777 184字节长,最后,存入数据库中,由于存储时间较长,程序运行时有进度提示,实现代码如下:

6 从SQL中读取分块存储的数据,还原文件的代码

对上面还原程序代码进行改进,从数据库中读取出记录后,把每块内容进行base64反编码,最后,写入指定的还原文件中,由于存储时间较长,程序运行时有进度提示,实现代码如下:

7 结语

当文件尺寸小于12 M时,可以直接存储到数据库中;当文件尺寸大于12 M时,就必须采用分块技术存储到数据库。采用VFP9语言编程,完美实现了超大文件的存储和还原。为了方便程序调用,可以进一步把程序修改成函数。

猜你喜欢
程序代码分块字节
No.8 字节跳动将推出独立出口电商APP
分块矩阵在线性代数中的应用
No.10 “字节跳动手机”要来了?
计算机网络信息安全未来发展趋势
简谈MC7字节码
反三角分块矩阵Drazin逆新的表示
基于自适应中值滤波的分块压缩感知人脸识别
基于多分辨率半边的分块LOD模型无缝表达
人类进入“泽它时代”
嵌入式系统中程序的优化策略