怎樣把大量的數(shù)據(jù)通過(guò)txt文件直接導(dǎo)入到數(shù)據(jù)庫(kù)中
只要你的文件能夠用記事本打開并格式正確,就可以把他認(rèn)為是文本文件進(jìn)行處理. 象這種格式的數(shù)據(jù)沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當(dāng)讀到完整的記錄時(shí)執(zhí)行SQL語(yǔ)句插入到數(shù)據(jù)庫(kù)中.
如何將txt文本中的數(shù)據(jù)輕松導(dǎo)入MySQL表中
可以用Visual Studio Code打開txt文件,然后另存為sql文件,然后導(dǎo)入就可以了
例如下面的命令把c:\1.txt文件中的內(nèi)容插入到數(shù)據(jù)庫(kù)test的表t中:
load
data
infile
'c:\1.txt'
into
table
test.t;
如何將文本文檔批量數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中
現(xiàn)在有大量的測(cè)量數(shù)據(jù),比如長(zhǎng)度、直徑、溫度等。保存在某個(gè)文件夾下的多個(gè)同類型的文件中,后綴名是該測(cè)量系統(tǒng)自定義的,比如file1.cl這個(gè)樣式的,但是可以用記事本打開,里面的內(nèi)容是測(cè)量的數(shù)據(jù),但是分為多個(gè)段落保存,每個(gè)段落的開頭和結(jié)尾有固定的格式,比如file1.cl這個(gè)文件中,記錄了長(zhǎng)度、直徑和溫度三個(gè)測(cè)量值,記錄的方式為rnparameter=lengthrnvalue=1.00rnunit=meterrnparameter=diameterrnvalue=3.23rnunit=centimeterrnparameter=temperaturernvalue=24rnunit=Crnrn為了對(duì)大量的測(cè)試數(shù)據(jù)有個(gè)統(tǒng)計(jì)和分析,希望能夠批量將這些文件中的測(cè)量值導(dǎo)入到一個(gè)數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)的種類可以不限制,比如Excle、Access、SQLServer、Oracle都可以考慮。rnrn我目前的想法是用C#和SQLServer來(lái)完成,讀取目錄下的每個(gè)文件,并過(guò)濾出相應(yīng)的數(shù)據(jù),記錄到數(shù)據(jù)庫(kù)中,請(qǐng)問有沒有什么更快捷方便的方法,謝謝rnrn如果應(yīng)用C#和SQLServer,請(qǐng)問對(duì)同一文件夾下的非文本文件該如何用記事本讀取?只要文件能夠用記事本打開并格式正確,就可以把他認(rèn)為是文本文件進(jìn)行處理.
象這種格式的數(shù)據(jù)沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當(dāng)讀到完整的記錄時(shí)執(zhí)行SQL語(yǔ)句插入到數(shù)據(jù)庫(kù)中.
只要你的文件能夠用記事本打開并格式正確,就可以把他認(rèn)為是文本文件進(jìn)行處理.
象這種格式的數(shù)據(jù)沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當(dāng)讀到完整的記錄時(shí)執(zhí)行SQL語(yǔ)句插入到數(shù)據(jù)庫(kù)中.
把文本文件轉(zhuǎn)成一個(gè)的格式,比如用逗號(hào)分隔
111,234,fsgds,45645,ghjgh,sdf
dfg,fgh,fghf,dfgh,dfgdf,gdfg,
tryer,yery,ret,ertey,uti,yuiyu
是可以在數(shù)據(jù)庫(kù)中直接導(dǎo)入的
參考:http://hi.baidu.com/gisland/blog/item/b658666322d103670d33fa2a.html
asp.net/c#代碼實(shí)現(xiàn)excel to mssql數(shù)據(jù)導(dǎo)入
2008年12月17日 星期三 13:42
做網(wǎng)站項(xiàng)目時(shí),可能會(huì)遇到將excel文件中的數(shù)據(jù)導(dǎo)入至sql server數(shù)據(jù)庫(kù)的需求,把excel也看作數(shù)據(jù)庫(kù),使用OleDb連接后讀取數(shù)據(jù)然后寫入用SqlClient連接的sql server數(shù)據(jù)庫(kù)即可,技術(shù)上沒有什么難度。
但是需要考慮的一個(gè)問題是,系統(tǒng)安裝的環(huán)境一般是專用sql server服務(wù)器+web服務(wù)器+客戶端,而excel文件往往在客戶端導(dǎo)入,如果直接使用sql語(yǔ)句讀取的話,由于sql在web服務(wù)器上運(yùn)行,不能讀取到客戶端的excel地址,就會(huì)出錯(cuò)了。
既然知道了錯(cuò)誤的原因,解決方案也就有了:
1、把客戶端的excel上傳至web服務(wù)器上某文件夾,注意要給該文件夾設(shè)置網(wǎng)絡(luò)用戶的“寫入”權(quán)限;
2、使用OleDb+sql語(yǔ)句讀取web服務(wù)器上的excel文件
3、將讀取的數(shù)據(jù)寫入到sql server 數(shù)據(jù)庫(kù)
4、將web服務(wù)器上的臨時(shí)excel刪除
部分代碼如下:
string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\"));
FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\") + filename);//上傳文件
string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("fileupload\\") + filename + ";Extended Properties=Excel 8.0";
string sqlin = "SELECT * FROM [Sheet2$]";
OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
DataSet dsin = new DataSet();
adapterin.Fill(dsin);
DataTable dtin = dsin.Tables[0];//連接并讀取excel數(shù)據(jù)
for (i = 3; i <= totalrow; i++)//將Excel文件中第一個(gè)工作表的數(shù)據(jù)導(dǎo)入到sql數(shù)據(jù)庫(kù)scjd_youliaoxiaohaojihua表中
{
string sql = "insert into scjd_youliaoxiaohaojihua(yuexuhao,danwei,youpin,cheliangmingchengxinghao,zichanxingzhi,chepaihao,qiyou,chaiyou,beizhu) values('";
int j;
sql += DropDownList1.SelectedValue.ToString() + DropDownList3.SelectedValue.ToString();
if (DropDownList1.SelectedValue.ToString() != DateTime.Now.Year.ToString() || int.Parse(DateTime.Now.Month.ToString()) != int.Parse(DropDownList3.SelectedValue.ToString()))
{
sql += "20";
}
else
{
if (int.Parse(DateTime.Now.Day.ToString()) < 10)
sql += "0";
sql += DateTime.Now.Day.ToString();
}
if (i-3 + count < 9)
sql += "00";
else if (i-3 + count < 99)
sql += "0";
sql += (i -3 + 1 + count).ToString();
sql += "','";
for (j = 1; j < 8; j++)
{//遍歷Excel表中一行的所有列,除最后一列
sql += dtin.Rows[i][j].ToString().Trim();
sql += "','";
}
sql += dtin.Rows[i][8].ToString().Trim();
sql += "')";
try
{
DoSql(sql);
}
catch (Exception eeeeeee)
{
Response.Write("<script>alert('數(shù)據(jù)導(dǎo)入錯(cuò)誤,請(qǐng)檢查Excel文件')</script>");
return;
}
}
FileInfo file = new FileInfo(Server.MapPath("fileupload/") + filename);
if (file.Exists)
{//刪除文件
file.Delete();
}
protected void DoSql(string sql)//執(zhí)行sql語(yǔ)句的函數(shù)
{
SqlConnection conn = new SqlConnection();//創(chuàng)建連接對(duì)象
conn.ConnectionString = ConfigurationManager.AppSettings["conn"].ToString();//給連接字符串賦值
conn.Open();//打開數(shù)據(jù)庫(kù)
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();//
conn.Close();//關(guān)閉數(shù)據(jù)庫(kù)
}
注:
1、本文代碼均取自我最近剛做的一個(gè)小項(xiàng)目,部分?jǐn)?shù)據(jù)有較強(qiáng)針對(duì)性,并不通用,只有思路通用
2、由于能力和水平問題,部分代碼顯得有些笨拙,若能靈活運(yùn)用存儲(chǔ)過(guò)程,應(yīng)能大幅度簡(jiǎn)化代碼
asp.net/c#代碼實(shí)現(xiàn)excel to mssql數(shù)據(jù)導(dǎo)入
2008年12月17日 星期三 13:42
做網(wǎng)站項(xiàng)目時(shí),可能會(huì)遇到將excel文件中的數(shù)據(jù)導(dǎo)入至sql server數(shù)據(jù)庫(kù)的需求,把excel也看作數(shù)據(jù)庫(kù),使用OleDb連接后讀取數(shù)據(jù)然后寫入用SqlClient連接的sql server數(shù)據(jù)庫(kù)即可,技術(shù)上沒有什么難度。
但是需要考慮的一個(gè)問題是,系統(tǒng)安裝的環(huán)境一般是專用sql server服務(wù)器+web服務(wù)器+客戶端,而excel文件往往在客戶端導(dǎo)入,如果直接使用sql語(yǔ)句讀取的話,由于sql在web服務(wù)器上運(yùn)行,不能讀取到客戶端的excel地址,就會(huì)出錯(cuò)了。
既然知道了錯(cuò)誤的原因,解決方案也就有了:
1、把客戶端的excel上傳至web服務(wù)器上某文件夾,注意要給該文件夾設(shè)置網(wǎng)絡(luò)用戶的“寫入”權(quán)限;
2、使用OleDb+sql語(yǔ)句讀取web服務(wù)器上的excel文件
3、將讀取的數(shù)據(jù)寫入到sql server 數(shù)據(jù)庫(kù)
4、將web服務(wù)器上的臨時(shí)excel刪除
部分代碼如下:
string filename = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\"));
FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\") + filename);//上傳文件
string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("fileupload\\") + filename + ";Extended Properties=Excel 8.0";
string sqlin = "SELECT * FROM [Sheet2$]";
OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
DataSet dsin = new DataSet();
adapterin.Fill(dsin);
DataTable dtin = dsin.Tables[0];//連接并讀取excel數(shù)據(jù)
for (i = 3; i <= totalrow; i++)//將Excel文件中第一個(gè)工作表的數(shù)據(jù)導(dǎo)入到sql數(shù)據(jù)庫(kù)scjd_youliaoxiaohaojihua表中
{
string sql = "insert into scjd_youliaoxiaohaojihua(yuexuhao,danwei,youpin,cheliangmingchengxinghao,zichanxingzhi,chepaihao,qiyou,chaiyou,beizhu) values('";
int j;
sql += DropDownList1.SelectedValue.ToString() + DropDownList3.SelectedValue.ToString();
if (DropDownList1.SelectedValue.ToString() != DateTime.Now.Year.ToString() || int.Parse(DateTime.Now.Month.ToString()) != int.Parse(DropDownList3.SelectedValue.ToString()))
{
sql += "20";
}
else
{
if (int.Parse(DateTime.Now.Day.ToString()) < 10)
sql += "0";
sql += DateTime.Now.Day.ToString();
}
if (i-3 + count < 9)
sql += "00";
else if (i-3 + count < 99)
sql += "0";
sql += (i -3 + 1 + count).ToString();
sql += "','";
for (j = 1; j < 8; j++)
{//遍歷Excel表中一行的所有列,除最后一列
sql += dtin.Rows[i][j].ToString().Trim();
sql += "','";
}
sql += dtin.Rows[i][8].ToString().Trim();
sql += "')";
try
{
DoSql(sql);
}
catch (Exception eeeeeee)
{
Response.Write("<script>alert('數(shù)據(jù)導(dǎo)入錯(cuò)誤,請(qǐng)檢查Excel文件')</script>");
return;
}
}
FileInfo file = new FileInfo(Server.MapPath("fileupload/") + filename);
if (file.Exists)
{//刪除文件
file.Delete();
}
protected void DoSql(string sql)//執(zhí)行sql語(yǔ)句的函數(shù)
{
SqlConnection conn = new SqlConnection();//創(chuàng)建連接對(duì)象
conn.ConnectionString = ConfigurationManager.AppSettings["conn"].ToString();//給連接字符串賦值
conn.Open();//打開數(shù)據(jù)庫(kù)
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();//
conn.Close();//關(guān)閉數(shù)據(jù)庫(kù)
}
注:
1、本文代碼均取自我最近剛做的一個(gè)小項(xiàng)目,部分?jǐn)?shù)據(jù)有較強(qiáng)針對(duì)性,并不通用,只有思路通用
2、由于能力和水平問題,部分代碼顯得有些笨拙,若能靈活運(yùn)用存儲(chǔ)過(guò)程,應(yīng)能大幅度簡(jiǎn)化代碼 只要你的文件能夠用記事本打開并格式正確,就可以把他認(rèn)為是文本文件進(jìn)行處理.
象這種格式的數(shù)據(jù)沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當(dāng)讀到完整的記錄時(shí)執(zhí)行SQL語(yǔ)句插入到數(shù)據(jù)庫(kù)中.
如何將一個(gè)txt文檔的數(shù)據(jù)批量導(dǎo)入到數(shù)據(jù)庫(kù)?
這個(gè)txt是什么樣的格式?如果有規(guī)律的格式,可以先將txt讀取到DataTable中,然后循環(huán)datatable中的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中。
用BCP命令
編寫和執(zhí)行存貯過(guò)程:
CREATE PROCEDURE IMPORTTXT
@DBNAME VARCHAR(100)--數(shù)據(jù)庫(kù)名
AS
DECLARE @SQLSTRING NVARCHAR(1000)
Set @SqlString=N'Master..xp_CmdShell ''bcp '
[email protected]+'.DBO.TABLENAME in C:\CSVFILE.TXT -c -S'+@@servername+' -USA -P'''
execute sp_executesql @SqlString
GO
該過(guò)程將C:\CSVFILE.TXT 導(dǎo)入到TABLENAME表中,要求字段結(jié)構(gòu)相符。TXT文檔要求是以制表符為字段間隔符,換行為記錄間隔??梢灾苯邮褂肊XCEL導(dǎo)出的“以制表符分隔的文本文檔”,或?qū)⑽谋疚臋n轉(zhuǎn)換成該格式。
你需要寫一個(gè)讀取類 ,把它讀到數(shù)組里面 用Datareader
PHP編程:有沒有辦法把txt文件批量導(dǎo)入mysql數(shù)據(jù)庫(kù).
一批10000個(gè)txt文件,一個(gè)文件為一篇文章,我想導(dǎo)入mysql,第一行為標(biāo)題,其余為內(nèi)容,有沒有方法實(shí)現(xiàn)?首先10000txt文件要起一個(gè)有規(guī)律的名稱。例如按數(shù)字大小。這樣便于循環(huán)。
如果不是這樣,也可以做,但是要遍歷目錄,判斷文件。
$file_name_arr = scandir(文件目錄);//遍歷文件
unset($file_name_arr[0]);
unset($file_name_arr[1]);
$file_name_arr = array_values($file_name_arr);
foreach($file_name_arr as $file_name){
if(is_file(路徑/$file_name){
$str_arr = get_txt(文件地址);
//把數(shù)據(jù)插入數(shù)據(jù)庫(kù),記得在把內(nèi)容向表里插的時(shí)候要加addslashes(),$str_arr[0]就是標(biāo)題,$str_arr[1]就是內(nèi)容
}
}
function get_txt($file){
$str = file_get_contents($file);
$str_arr = preg_split('|\n|',$str);
return $str_arr;
}
建議把10000個(gè)文件分成多份執(zhí)行,避免數(shù)據(jù)庫(kù)跑死
自己寫程序咯,file_get_contents()就可以或是直接file()按行讀入數(shù)組,x[0]為標(biāo)題,x[1]為內(nèi)容.
可以的
相關(guān)推薦:
商標(biāo)侵權(quán)有那些解決途徑(商標(biāo)被侵權(quán)怎么辦)
如何行使商標(biāo)優(yōu)先權(quán)(商標(biāo)優(yōu)先權(quán)的取得方法是什么)
商標(biāo)異議答辯的內(nèi)容(商標(biāo)侵權(quán)答辯狀應(yīng)該怎么寫)
哪種情況不受理專利申請(qǐng)(專利申請(qǐng)不予受理的有哪些情形)
什么是馳名商標(biāo)(中國(guó)名牌產(chǎn)品和馳名商標(biāo)有什么區(qū)別)