下面贴上代码,我是用C++测试的。
#include <Windows.h>
#include <iostream>
#include <fstream>
using namespace std;
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
//导入数据文件
//conn 数据库连接
//command 命令
int LoadDataFile(_ConnectionPtr & conn, char * command)
{
try
{
conn->Execute(command, NULL, 0); //执行导入文件命令
}
catch (_com_error &e)
{
cout<<e.Description()<<endl; //如果错误输出错误信息
system("pause");
return 1;
}
return 0;
}
//创建大数据文件
void CreateDataFile()
{
char temp[1024];
fstream gOutFile;
gOutFile.open("d:\\data0.txt", //文件最好用绝对路径,方便查找
ios::out | ios::trunc);
for (int i = 0; i < 100000; i++) //构造10W条记录
{
sprintf_s(temp, 1024, "%d|@@|name%d|@@|0|@@|2012-10-10 10:22:27|@@|content|<>|"
, i+1
, i+1); //这里是格式化每一条数据,列之间用|@@|隔开,每条记录之间用|<>|隔开
gOutFile.write(temp, strlen(temp));
}
gOutFile.close();
}
int main()
{
int startTime, endTime;
char command[1024];
//构建导入文件命令
sprintf_s(command, 1024, "LOAD DATA INFILE 'D:/data0.txt' \
INTO TABLE T_TEST \
FIELDS TERMINATED BY '|@@|' \
LINES TERMINATED BY '|<>|'");
//初始化库
CoInitialize(NULL);
_ConnectionPtr m_pConnection;
//创建数据库连接实例
m_pConnection.CreateInstance("ADODB.Connection");
try
{
//打开数据库连接,数据库连接字符串在下面详细介绍
HRESULT hr = m_pConnection->Open(
"DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=test;",
"root",
"123456",
adModeUnknown);
}
catch(_com_error &e)
{
cout<<e.Description()<<endl;
system("pause");
return 1;
}
//创建数据文件
CreateDataFile();
//计时开始
cout<<"Start:\t"<<(startTime = GetTickCount())<<endl;
//录入文件
LoadDataFile(m_pConnection, command);
//计时结束
cout<<"End:\t"<<(endTime = GetTickCount())<<endl;
cout<<"Total:\t"<<startTime-endTime<<" ms"<<endl;
//库清理
CoUninitialize();
system("pause");
return 0;
}
关于MYSQL的连接字符串:
m_pConnection->Open("DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=test;","root","123456",adModeUnknown);
{MySQL ODBC 5.1 Driver}是MySql的ODBC驱动,官网上有下载,5.1是版本
SERVER是mysql安装电脑的IP,如果是本地用localhost就可以.
DATABASE是要连接的数据库。
Open方法中"root"是数据库用户名 “123456”是用户密码。
测试步骤:1.新建一个数据库test
2.在这个数据库下执行以下数据库脚本
CREATE TABLE T_TEST(
F_ID BIGINT PRIMARY KEY,
F_NAME VARCHAR(32),
F_SEX SMALLINT,
F_BIRTHDAY DATETIME,
F_CONTENT VARCHAR(512));
3. 执行程序时确保T_TEST表为空.
4. 测试结果是10W条数据在1s左右可以入库