如何快速导入大SQL文件到MySQL数据库

如何快速导入大SQL文件到MySQL数据库,第1张

大SQL文件导入数据的方法:

1、点击"开始"-"运行",输入cmd,然后回车进入到DOS界面。

2、进入MYSQL安装目录。

3、假如MYSQL安装在D盘,SQL文件也在D盘,加入命名为demosql, *** 作的方法是:

输入"D:",回车即进入到D盘了,然后输入"cd mysql/bin"并回车

4、再输入"mysql -u root -p database d:/demosql",回车显示要输入密码

5、如果MYSQL数据库的密码为空则不输入任何东西回车,没有出现错误说明导入成功。

注意:上面的database是要导入的数据库名。

你先将文本文件按换行符的分开读到一个字符窜变量中去,name:=copy(str1,0,4),加到数据库中去呀。

比如:str1:='张某;19;一(1)',然后就分化这个字符窜,将他逐个加到数据库中去呀

当你建好了数据库及表时 你首先想到的就是向数据库的表中输入数据 这就牵涉到如何向数据库增加数据 下面我们就来探讨一下这个问题: 一般我们常用的方法是insert语句(这里假定各位的版本都不是很低) 她有以下几种形式:insert into tablename values(value value )insert into tablename(fieldname fieldname ) values(value value )insert into tablename set fieldname =value fieldname =value insert into tablename(fieldname fieldname ) select fieldname fieldname from tablename 以上基本上罗列了用insert插入数据的方法 当然你也可以用insert语句将几行同时插入到一个表中 如下所示:insert into tablename values( ) ( ) 在mysql运行环境下 我们还可以用LOAD DATA 语句把文件里面的数据读取录入到表里面 一般来讲 因为此文件是由服务器在主机上直接读取的 所以你必须具有file权限且文件必须是完全可读 当你版本够新的话 你可以给出local 这样由于你是从客户机上读取该文件并将内容传送到服务器 你就不需要file权限 如果你没有给出local 则服务器按如下方法对其进行定位: )如果你的filename为绝对路径 则服务器从根目录开始查找该文件 )如果你的filename为相对路径 则服务器从数据库的数据目录中开始查找该文件 如果你给出了local 则文件将按以下方式进行定位: )如果你的filename为绝对路径 则客户机从根目录开始查找该文件 )如果你的filename为相对路径 则客户机从当前目录开始查找该文件 说了半天 也许你还不明白这具体的格式 看下面先:LOAD DATA [LOCAL] INFILE filename into table tablename import_options [(fieldname_list)]import options的语法为:fieldsterminated by char enclosed by char escaped by char linesterminated by string 下面我们对其进行一些说明: )fields terminated by char 指定分隔列的字符.缺省时假定列值由制表符分隔. )fields enclosed by char 指明列值应包括在指定的字符中.通常用引号.缺省时 假定列值不包括在任何字符中. )fields escaped by char 表示用于转义特殊字符的转义符.缺省时表示无转义符 )lindes escaped by string 指定结束输入行的串(可以是多字符的).缺省时假定由换行符终止行需要注意的是转义字符的使用 如:\ 表示单引号 \ 表示双引号 等等 另外还有一些选项这里没有具体谈到 如 ignore n lines 她可以控制文件的前n行不被读入数据库 详细请看mysql中文参考 说了上面这么多 给一行命令大家具体体会一下:load data [local] infile sample txt into table sample fields terminated by enclosed by \ 在系统命令行下你可以用mysqlimport实用程序 她将文本文件的内容读取到已有表中(其实mysqlimport起的作用就是实现load data命令行的接口) 调用完mysqlimport后她生成一个load data 语句 语法基本上和load data差不多:mysqlimport [options] sample_db filename同样 给条命令看一下吧:mysqlimport Cu root [ local] Cfields terminated by= fields enclosed by= \ samp_db samp_table txt(REMARK:此语句中samp_db为指定的数据库 要录入数据的表由文件名参数确定 文件名去掉其任何扩展名 留下的就是表名 所以此语句中录入数据的表名为samp_table 也就是说在执行这条语句时首先应该肯定表samp_table存在 另外如果你有多个文件需要装入同一个表里 你可以用samp_table n txt来处理) lishixinzhi/Article/program/MySQL/201311/29349

数据库是不会存储文件的,他只是存储文件的存放地址,比如你想存储一个文件,你可以把文件名,文件大小,文件格式,文件存储的地址(d:/file/fieltxt)存到数据库表中。

当你想获取文件的时候就直接读取文件的存储地址File file=new File("d:/file/fieltxt");,这样就能存储数据文件了

SQL Server 2005:

通过OPENROWSET和bcp:---示例1:

 -- SQL Server import image - SQL Server export image-- Extract image SQL Server - SQL Server export binary data

USE AdventureWorks;

GO

  

-- Create image warehouse for importing image into sql database

CREATE TABLE dboPhotoLibrary (

  PhotoLibraryID INT IDENTITY ( 1 , 1 ) PRIMARY KEY,

  ImageName        VARCHAR(100),

  Photo            VARBINARY(MAX))

GO

  

-- SQL Server import image - sql storing images database sql server

INSERT INTO dboPhotoLibrary

([ImageName])

VALUES     ('MadisonAVEJPG')

UPDATE dboPhotoLibrary

SET    Photo = (SELECT 

FROM OPENROWSET(BULK 'e:\image\photo\MadisonAVEJPG',   --源文件地址

SINGLE_BLOB) AS x)

WHERE  [ImageName] = 'MadisonAVEJPG'

GO

  

-- Check table population

SELECT 

FROM   dboPhotoLibrary

GO

  

-- SQL Server export image

DECLARE  @Command NVARCHAR(4000)

  

-- Keep the command on ONE LINE - SINGLE LINE!!! - broken here for presentation

SET @Command = 'bcp "SELECT Photo FROM AdventureWorksdboPhotoLibrary"

                   queryout "e:\image\photo\expMadisonAVEjpg" -T -n -SPROD\SQL2005'

PRINT @Command -- debugging

EXEC xp_cmdshell @Command

GO

   

 

--- 示例2:

------------- T-SQL Export all images in table to file system folder

--导出所有的图象到文件

-- Source table: ProductionProductPhoto  - Destination: K:\data\images\productphoto\

--来源表 ProductionProductPhoto 目标:K:\data\images\productphoto\

------------

  

USE AdventureWorks2008;

GO

  

DECLARE  @Command       VARCHAR(4000),

         @PhotoID       INT,

         @ImageFileName VARCHAR(128)

DECLARE curPhotoImage CURSOR FOR -- Cursor for each image in table

SELECT ProductPhotoID,

       LargePhotoFileName

FROM   ProductionProductPhoto

WHERE  LargePhotoFileName != 'no_image_available_largegif'

OPEN curPhotoImage

FETCH NEXT FROM curPhotoImage

INTO @PhotoID,

     @ImageFileName

WHILE (@@FETCH_STATUS = 0) -- Cursor loop 

BEGIN

  

-- Keep the bcp command on ONE LINE - SINGLE LINE!!! - broken up for presentation

SET @Command = 'bcp "SELECT LargePhoto FROM

    AdventureWorks2008ProductionProductPhoto WHERE ProductPhotoID = ' +

convert(VARCHAR,@PhotoID) + '" queryout "K:\data\images\productphoto\' +

    @ImageFileName + '" -T -n -SHPESTAR'

PRINT @Command – debugging 

  

/ bcp "SELECT LargePhoto FROM AdventureWorks2008ProductionProductPhoto

WHERE ProductPhotoID = 69" queryout

"K:\data\images\productphoto\racer02_black_f_largegif" -T -n -SHPESTAR

/

  

EXEC xp_cmdshell @Command     -- Carry out image export to file from db table

FETCH NEXT FROM curPhotoImage

INTO @PhotoID,

         @ImageFileName

END -- cursor loop

CLOSE curPhotoImage

DEALLOCATE curPhotoImage

  

/output

NULL

Starting copy

NULL

1 rows copied

Network packet size (bytes): 4096

Clock Time (ms) Total     : 16     Average : (6250 rows per sec)

NULL

/

  

------------ 

文件上传到数据库请参考以下示例:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page language="java" import="javasql" %>

<%/////连接数据库

javasqlConnection conn;

javasqlStatement stmt;

javasqlResultSet rs1;

ClassforName("sunjdbcodbcJdbcOdbcDriver");

conn=DriverManagergetConnection("jdbc:odbc:dababasename");///数据源

stmt=conncreateStatement();

%>

<%

String sqlin="insert into drawing values ;

File file = new File("c:/zjpg");

long l1=filelength();

int l2=(int)l1;

FileInputStream is = new FileInputStream(file);

InputStream fis=(InputStream)is;

PreparedStatement ps = connprepareStatement("insert into images values (,)");

pssetString(1,filegetName());

pssetBinaryStream(2,fis,filelength());

psexecuteUpdate();

psclose();

fisclose();

//将从数据库中提取,进行显示

//drawing字段为IMAGE类型

stmt = conncreateStatement();

rs1 = stmtexecuteQuery("SELECT FROM drawing WHERE drawing_code ='0-515' and version=3");

if (rs1next())

{

String dim_image = rs1getString("file_name");

byte [] blocco = rs1getBytes("drawing");

responsesetContentType("image/jpeg");

ServletOutputStream op = responsegetOutputStream();

for(int i=0;i<bloccolength;i++)

{

opwrite(blocco[i]);

}

}

rs1close();

%>

以上就是关于如何快速导入大SQL文件到MySQL数据库全部的内容,包括:如何快速导入大SQL文件到MySQL数据库、如何将文本文件中的数据写入数据库中、如何向mysql数据库的表中录入数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9528670.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存