将文件写入数据库
具体操作步骤如下:
1、首先打开Navicat软件,连接到数据库进入需要导入的数据库:
② 如何将大文件写入到数据库中
最近利用空闲时间自己在写一个文件备份工具,因为我磁盘上的很多文件很重要,例如很多PPT和讲义。所以需要经常备份,而且因为这些文件很多,所以需要增量备份。
我尝试用过windows自带的ntbackup工具,但感觉不是很爽。它不支持压缩备份,而且界面也有点宏则复杂。
为了响应伟大领袖的“自力更生,丰改衫衣足食”的号召,咱决定自己写一个工具,专门备份到数据库。支持压缩,支持加密,支持增量。
本文分享一下其中一些重点的技术细节
其中一个关键的技术就是将文件使用二进制的方式存放在数据库的varbinary(max)的字段中。该字段最大允许的长度为2GB。
对于一些小文件,我们可以一次性读取它的所有字节,然后一次提交到数据库
/// <summary>
/// 这个方法演示了如何一次提交所有的字节。这样导致的结果是:应用程序立即需要申请等同于文件大小的内存
/// </summary>
static void SubmitFileByOnce() {
string file = @"F:\功夫熊猫.rmvb";//文件大小为519MB
byte[] buffer = File.ReadAllBytes(file);
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true")) {
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
new SqlParameter("@fileContents",buffer)
});
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
但是,上面的方法有几个问题,主要体现在如果文件比较大的话
1. 它需要一次性很大的内存,具体数据等同于文件大小。因为File.ReadAllBytes方法是将所有字节全部读入到内存。
2. 它会导致提交失败,就是因为数据太大了。数据库也会拒绝。
那么,我就对这个方法做了一下改进,将文件拆分为5MB一段,也就是说,此时每次申请的内存只有5MB。这就大大地提高了可用性。
/// <summary>
/// 这个方法是将文件切分为5MB的块,每次只是提交5MB,所以可能多次提交,但内存占用就比较小
/// </summary>
static void SubmitFileStepByStep() {
string file = @"F:\功夫熊猫.rmvb";//以这个文件为例,大小为519MB,一共需要的时间大约94秒。还是有点慢的,所以还可能需要进行压缩
FileStream fs = new FileStream(file, FileMode.Open);
byte[] buffer = new byte[5 * 1024 * 1024];
int readCount;
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true"核绝腔))
{
conn.Open();
while ((readCount = fs.Read(buffer, 0, buffer.Length)) > 0)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO Files(FileName,FileContents) VALUES(@fileName,@fileContents)";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
new SqlParameter("@fileContents",buffer)
});
cmd.ExecuteNonQuery();
}
}
conn.Close();
}
}
这样的话,有一个后果就是一个文件,可能在数据库中会有多条记录。所以在读取的时候,我们需要对其进行合并
static void DownloadFile() {
string file = @"F:\功夫熊猫.rmvb";
string destfile = @"E:\Temp\Temp.wmv";
using (SqlConnection conn = new SqlConnection("server=(local);database=demo;integrated security=true"))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT FileContents FROM Files WHERE FileName=@fileName";
cmd.Parameters.AddRange(
new[]
{
new SqlParameter("@fileName",file),
});
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
FileStream fs = new FileStream(destfile, FileMode.Append, FileAccess.Write);
while (reader.Read())
{
byte[] buffer = (byte[])reader[0];
fs.Write(buffer, 0, buffer.Length);
}
fs.Close();
reader.Close();
conn.Close();
}
}
}
本文由作者:陈希章
③ 如何把一个word文档中的内容写入到数据库中
首先,建立一个Access2000数据库data.mdb,在库中建立一个表userdata,里面有“工号”、“姓名”、“性别”、“部门”四个字段,都是字符型的,再输入一些数据,再建立一个窗体Form1,在Form1中,放置以下控件:
控件名称 属性 值 说明
Tlabel1 Caption "请输入文件名"
TEdit1 Name "" 用来输入文件名,带扩展名的
TButton1 Caption "保存"
TButton2 Caption "退出"
ADOTable1 Active
ConnectionString
TableName True
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Persist Security Info=False
userdata
下面是相关代码:
file://---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant OLEObject;
AnsiString dataword;
if(Trim(Edit1->Text)=="")
{
ShowMessage("请输入文件名");
return;
}
String currentPath=GetCurrentDir()+"//"+Trim(Edit1->Text);
OLEObject=CreateOleObject("Word.Basic");
OLEObject.Exec(Procere("FileNew"));
OLEObject.Exec(Procere("EndOfDocument"));
ADOTable1->First();
while(ADOTable1->Eof!=True)
{
dataword=ADOTable1->FieldValues["工号"]+ADOTable1->FieldValues["姓名"]+ADOTable1->FieldValues["性别"]+ADOTable1->FieldValues["部门"];
OLEObject.Exec(Procere("Insert")<<dataword);
ADOTable1->Next();
}
OLEObject.Exec(Procere("StartOfDocument"));
OLEObject.Exec(Procere("FileSaveAs")<<currentPath);
OLEObject.Exec(Procere("FileClose")<<1);
ShowMessage("文件已经写入!谢谢使用!");
}
---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
this->Close();
}
---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Text="";
}
④ 将文件导入到数据库中的方法小结
大型的数据库开发中常常遇到数据源是平面文件的情况 对于这样的数据源 无法使用数据库对其数据进行有效的管理 本文介绍几种常见的数据导入的方法 希望能够给读者以启迪 另外 本文所涉及到的数据库均为ORACLE数据库 其实对于其他数据库而言 方法类似 一 Sql*:Loader 该方法是Oracle数据库下数据导入的最重要的方法之一 该工具由Oracle客户端提供 其基本工作原理是 首先要针对数据源文件制作一个控制文件 控制文件是用来解释如何对源文件进行解析 其中需要包含源文件的数据格式 目标数据库的字段等信息 一个典型的控制文件为如下形式 LOAD DATAINFILE /ora i/fengjie/agent/data/ipaagentdetail txt TRUNCATEINTO TABLE fj_ipa_agentdetailfields terminated trailing nullcols( AGENT_NO char AGENT_NAME char AGENT_ADDRESS char AGENT_LINKNUM char AGENT_LINKMAN char)其中 INFILE /ora i/fengjie/agent/data/ipaagentdetail txt 指明所要导入的源文件 其实源文件也可以直接通过命令行来输入获得 fj_ipa_agentdetail为目标表的名字 fields terminated 是指源文件的各个字段是以逗号分隔 trailing nullcols表示遇到空字段依然写入到数据库表中 最后这5个字段是目标数据库表的字段结构 通过上面这个典型的控制文件的格式分析可知 控制文件需要与源文件的格式信息一致 否则导入数据会出现异常 除了控制以外郑御 sql*loader的还需要数据文件 即源文件 根据格式的不同 源文件可以分为固定字段长度和有分隔符这两大类 这里将分别说明这两种情况 固定字段长度的文本文件就是每个字段拥有固定的字段扒丛茄长度 比如 有分隔符的文本文件就是每个字段都有相同的分隔符分隔 比如 上海长途电信综合开发公司 南京东路 号 室 上海桦奇通讯科技有限公司 武宁路 号 室 上海邦正科技发展有限公司 南京东路 号 室对于上述两种文件格式sql*loader均可以做处理 下面就前面那个固定长度的文本来举例说明 由于该文本只有两个字段 一个为设备号 一个是区局编号 两者的长度分别为20和5 那么可以编制控制文件如下 LOAD DATAINFILE /ora i/fengjie/agent/data/ipaagent txt TRUNCATEINTO TABLE fj_ipa_agent春察( DEVNO POSITION( : ) CHAR BRANCH_NO POSITION( : ) CHAR)其中 /ora i/fengjie/agent/data/ipaagent txt 为该文件的完全路径 POSITION(M:N)表示该字段是从位置M到位置N 对于有分隔符的数据文件 前面已经有一个例子 这里就不再赘述了 总之 使用Sql*Loader能够轻松将数据文件导入到数据库中 这种方法也是最常用的方法 二 使用专业的数据抽取工具 目前在数据仓库领域中 数据抽取与装载(ETL)是一重要的技术 这一技术对于一些大的数据文件或者文件数量较多尤其适合 这里简单介绍目前一款主流的数据抽取工具――Informatica 该工具主要采用图形界面进行编程 其主要工作流程是 首先将源数据文件的结构(格式)导入为Informatica里 然后根据业务规则对该结构进行一定的转换(transformation) 最终导入到目标表中 以上过程仅仅只是做了一个从源到目标的映射 数据的实际抽取与装载需要在工作流(workflow)里进行 使用专业的数据抽取工具 可以结合业务逻辑对多个源数据进行join union insect等操作 适合于大型数据库和数据仓库 三 使用Access工具导入 可以直接在Access里选择 打开 文本文件 这样按照向导来导入一个文本文件到Access数据库中 然后使用编程的方法将其导入到最终的目标数据库中 这种方法虽然烦琐 但是其对系统的软件配置要求相对较低 所以也是有一定的使用范围 四 小结 总之 平面文件转化为数据库格式有利于数据的处理 显然 数据库强大的数据处理能力比直接进行文件I/O效率高出很多 希望本文能够对该领域做一个抛砖引玉的作用 lishixin/Article/program/Oracle/201311/18530
⑤ 想把文件存入数据库怎么办
数据库是不好老会存储友弯升文件的,他只是存储文件的存放地址,比如你想存储一个文件,你可以把文件名,文件大闹判小,文件格式,文件存储的地址(d:/file/fiel.txt)存到数据库表中。
当你想获取文件的时候就直接读取文件的存储地址Filefile=newFile("d:/file/fiel.txt");,这样就能存储数据文件了
⑥ 怎么导入数据库
问题一:如何导入已有的外部数据库 在增强工具下方找到【导入外部数据库】点击进入
这里不需要做任何的改动直接点击【下一步】就可以了
选择要导入的数据源的名称,选择导入数据源的类型,可以从本地导入到数据库中,也可以选择从远程数据库导入到目标数据库中,如果是远程的数据库需要配置远程数据源的验证,设置完成点击【下一步】按钮
选择要将数据源数据导入的目标数据库,一样的需要配置目标数据的IP地址、目标数据库的用户口令和数据库端口
指定数据导入选择数据的方式,可以通过选择数据表,也可以选择使用sql查询来实现一部分指定的数据导入到目标数据库
如果选择sql语句查询来实现一部分指定的数据导入到目标数据库,会进入到如下图的界面,将数据库的查询sql写入白框中,点击下一步按钮完成配置的工作。
问题二:服务器上数据库怎么导入sql脚本 方法/步骤
1
【第一导入数据结构】
打开本地计算机上的 SQL Server Management Studio 客户端软件:
2
本地电脑:登陆本机数据库连接控制端:
3
选择您要导出到服务器的数据库然后鼠标右键:选择生成SQL脚本:
4
选中本地电脑需要导出脚本的库名字
5
需要选择选择兼容sql2005的版本的脚本:
修改sql脚本的保存路径:记录下这个路径
查看生产脚本生成的选项:
成功生成sql脚本:并记录下脚本导出的路径
连接到虚拟主机提供的目标数据库服务器:
并点击新建查询,拷贝您导出的 SQL 脚本代码(此代码为第一步导出的sql脚本代码)到上图显示的查询分析器中,点击分析脚本,如果没有语法错误,就点击执行脚本,直到执行完毕。
【导入数据结构完毕】
【第二:导入数据库数据】
下面咱们开始导入数据库表中的数据:登陆您本地的数据库:
点击您本地计算机上的数据库右键-任务-导出数据:
选择目标数据库,如下添加虚拟主机提供给您的数据库信息(服务器地址,用户名,密码,数据库):
点击下一步,点击下一步,选中所有表,并确保“目标”
点击下一步,直到执行完毕:这样你的本地数据库就导入到虚拟主机上了
【导入数据库数据完毕】
问题三:怎样导入数据库 你先建立一个备份,然后建立备份用FTP,这样你空间数据库里会生成一个1.bak文件或者是1.sql文件。
1.bak是MSSQL数据库备份出来的文件,1.SQL是MYSQL的。
你打开FTP软件,然后将你电脑里的1.sql文件上传到这数据库空间,会提示你覆盖,你点是。
传完以后,你点一下从备份中还原就可以了。
如果你还不明白,你可以联系一下你的IDC服务商,让他们帮你导或者远程帮你操作也可以。
问题四:如何导入mysql数据库 MySQL数据库的导入,有两种方法:
1) 先导出数据库SQL脚本,再导入;
2) 直接拷贝数据库目录和文件。
在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。
2. 方法一 SQL脚本形式
操作步骤如下:
2.1. 导出SQL脚本
在原数据库服务器上,可以用phpMyAdmin工具,或者mysqlmp命令行,导出SQL脚本。
2.1.1 用phpMyAdmin工具
导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。
选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。
将导出的SQL文件保存下来。
2.1.2 用mysqlmp命令行
命令格式
mysqlmp -u用户名 -p 数据库名 > 数据库名.sql
范例:
mysqlmp -uroot -p abc > abc.sql
(导出数据库abc到abc.sql文件)
提示输入密码时,输入该数据库用户名的密码。
2.2. 创建空的数据库
通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。
2.3. 将SQL脚本导入执行
同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。
2.3.1 用phpMyAdmin工具
从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。
在SQL菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。
注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件
比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。
gzip使用方法:
# gzip xxxxx.sql
得到
xxxxx.sql.gz文件。
提示输入密码时,输入该数据库用户名的密码。
3 直接拷贝
如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。
3.1 准备原始文件
用tar打包为一个文件
3.2 创建空数据库
3.3 解压
在临时目录中解压,如:
cd /tmp
tar zxf mydb.tar.gz
3.4 拷贝
将解压后的数据库文件拷贝到相关目录
cd mydb/
cp * /var/lib/mysql/mydb/
对于FreeBSD:
cp * /var/db/mysql/mydb/
3.5 权限设置
将拷贝过去的文件的属主改为mysql:mysql,权限改为660
chown mysql:mysql /var/lib/mysql/mydb/*
chmod 660 /var/lib/mysql/mydb/*
打字不易,如满意,望采纳。...>>
问题五:网站数据库,怎么导入 ? 你先建立一个备份,然后建立备份用FTP,这样你空间数据库里会生成一个1.bak文件或者是1.sql文件。
1.bak是MSSQL数据库备份出来的文件,1.SQL是MYSQL的。
你打开FTP软件,然后将你电脑里的1.sql文件上传到这数据库空间,会提示你覆盖,你点是。
传完以后,你点一下从备份中还原就可以了。
如果你还不明白,你可以联系一下你的IDC服务商,让他们帮你导或者远程帮你操作也可以。
问题六:oracle中怎样导入数据库文件 ? 导出
导出具体的分为:导出表,导出方案,导出数据库三种方式。
导出使用exp命令来完成的,该命令常用的选项有:
userid: 用于指定执行导出操作的用户名,口令,连接字符串
tables: 用于指定执行导出操作的表
owner: 用于指定执行导出操作的方案
full=y: 用于指定执行导出操作的数据库
inctype: 用于指定执行导出操作的增量类型
rows: 用于指定执行导出操作是否要导出表中的数据
file: 用于指定导出文件名
Oracle 笔记
23
? 导出表
1.导出自己的表
exp [email protected] tables=(emp,dept) file=d:\e1.dmp
2.导出其它方案的表
如果用户要导出其它方案的表,则需要dba的权限或是exp_full_database的权限,比如system就可以导出scott的表
E:\oracle\ora92\bin>exp [email protected] tables=(scott.emp) file=d:\e2.emp
特别说明:在导入和导出的时候,要到oracle目录的bin目录下。
3. 导出表的结构
exp [email protected] tables=(emp) file=d:\e3.dmp rows=n
4. 使用直接导出方式
exp [email protected] tables=(emp) file=d:\e4.dmp direct=y
这种方式比默认的常规方式速度要快,当数据量大时,可以考虑使用这样的方法。
这时需要数据库的字符集要与客户端字符集完全一致,否则会报错...
? 导出方案
导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束...)和数据。并存放到文件中。
1. 导出自己的方案
exp [email protected] owner=scott file=d:\scott.dmp
2. 导出其它方案
如果用户要导出其它方案,则需要dba的权限或是exp_full_database的权限,比如system用户就可以导出任何方案
exp [email protected] owner=(system,scott) file=d:\system.dmp
? 导出数据库
导出数据库是指利用export导出所有数据库中的对象及数据,要求该用户具有dba的权限或者是exp_full_database权限
增量备份(好处是第一次备份后,第二次备份就快很多了)
exp [email protected] full=y inctype=plete file=d:\all.dmp
导入
? 介绍
导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件。与导
出相似,导入也分为导入表,导入方案,导入数据库三种方式。
imp常用的......>>
问题七:sql文件怎么导入mysql数据库 直接执行
mysql -uroot -pPassword 问题八:新建网站如何导入数据库MySQL 可以通过phpmyadmin工具导入mysql数据库备份。
Phpmyadmin常具支持导入数据库备份的格式有:.sql、.tar.gz、.tar
如果你的mysql数据库格式不是上述三种格式,请自行转换数据库备份格式。
在操作mysql数据库备份前,需要先在虚拟主机控制面板中新建一个mysql数据库。
操作方法如下:
第一步、登录phpmyadmin数据库管理工具。
第二步、登录phpmyadmin工具,需要您输入mysql数据库用户名和数据库密码。(这个登录信息,在新建mysql数据库的时候可以获得)
第四步、选择数据库,点击“导入”。
问题九:怎样把一个.sql的文件导入mysql数据库中 建议先导出表结构并进行整理,再进行数据迁移。SQL Server 和MySQL还是有很多地方不同的,比如某些字段类型,在MySQL中是不能够识别的,直接执行肯定是乱码。
⑦ 如何把文件存放到数据库中
发给你一个上传图片并把它存入数据库的例子。
1.前台<table cellpadding="0" cellspacing="0"
<tr<td colspan="2"</td</tr<tr<td<asp:Label ID="Label1" runat="server" Font-Size="9pt" Text="选择文件"</asp:Label</td
<td align="left"<asp:FileUpload ID="FileUpload1" runat="server" Font-Size="9pt" /</td</tr<tr<td</td
<td align="left"
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="保存"/</td</tr<tr<td</td
<td align="left"
<asp:Label ID="Label3" runat="server" Font-Size="9pt" Width="216px"</asp:Label</td</tr</table
2.后台using System.IO;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page{protected void Button1_Click(object sender, EventArgs e){try{if (this.FileUpload1.PostedFile.FileName != ""){string ImgPath = FileUpload1.PostedFile.FileName;
string ImgName = ImgPath.Substring(ImgPath.LastIndexOf("\\") + 1);
string ImgExtend = ImgPath.Substring(ImgPath.LastIndexOf(".") + 1);
int FileLen = this.FileUpload1.PostedFile.ContentLength;
Byte[] FileData = new Byte[FileLen];
HttpPostedFile hp = FileUpload1.PostedFile;
Stream sr = hp.InputStream;
sr.Read(FileData, 0, FileLen);
SqlConnection con = new SqlConnection("server=(local);user id=sa;pwd=;database=db_07");
con.Open();
SqlCommand com = new SqlCommand("INSERT INTO tb_08 (name) VALUES (@imgdata)", con);
com.Parameters.Add("@imgdata", SqlDbType.Image);
com.Parameters["@imgdata"].Value = FileData;
Label3.Text = "保存成功!";}else{Label3.Text = "请选择文件!";}}catch (Exception error){Label3.Text = "处理失败!原因为:" + error.ToString();}}}
⑧ 如何将Word文档存入数据库中
可以通过流将word转化为二进制数据,然后存入,选择使用一种动态语言即可轻松完成.
但是,由于此类文件较大,数据读取和写入都将非常缓慢,所以不提倡这样.
建议使用图片和文档的路径保存在数据库中.
⑨ 如何将数据库文件导入数据库中
附加数据库就可以完成.
附加数据库:企业管理器--右键"数据库"--所有任务--附加数据库
--选择你的.mdf文件名--确定--如果提示没有.ldf文件,是否创建,选择"是"
查询分析器中的方法:
--有数据文件及日志文件的情况
sp_attach_db
'数据库名'
,'数据文件名(*.mdf注意要带目录)'
--后面可以是用,分隔的该数据库的多个数据文件
,'日志文件名(*.ldf注意要带目录)'--后面可以是用,分隔的该数据库的多个日志文件
--如果只有数据文件的情况,'数据文件名(*.mdf注意要带目录)'
--后面可以是用,分隔的该数据库的多个数据文件
⑩ 怎样把大量的数据通过txt文件直接导入到数据库中
首先数据库存储数据有自己的格式:基本数据类型、二进制。。
怎么存储文件形式的数据?
1、针对txt文件,读取文本内容,数据库字段设置数据类型text,将读取的文本内容存入数据库。
2、转化为二进制存入数据库,读取文件,转化为二进制流,数据库字段设置bit,之后将二进制数据存入数据库,
3、将txt文件保存服务器制定目录下,在数据库中存储txt的绝对路径,访问时直接访问文件即可。