怎樣把大量的數據通過txt文件直接導入到數據庫中
只要你的文件能夠用記事本打開并格式正確,就可以把他認為是文本文件進行處理. 象這種格式的數據沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當讀到完整的記錄時執行SQL語句插入到數據庫中.
如何將txt文本中的數據輕松導入MySQL表中
可以用Visual Studio Code打開txt文件,然后另存為sql文件,然后導入就可以了
例如下面的命令把c:\1.txt文件中的內容插入到數據庫test的表t中:
load
data
infile
'c:\1.txt'
into
table
test.t;
如何將文本文檔批量數據導入到數據庫中
現在有大量的測量數據,比如長度、直徑、溫度等。保存在某個文件夾下的多個同類型的文件中,后綴名是該測量系統自定義的,比如file1.cl這個樣式的,但是可以用記事本打開,里面的內容是測量的數據,但是分為多個段落保存,每個段落的開頭和結尾有固定的格式,比如file1.cl這個文件中,記錄了長度、直徑和溫度三個測量值,記錄的方式為rnparameter=lengthrnvalue=1.00rnunit=meterrnparameter=diameterrnvalue=3.23rnunit=centimeterrnparameter=temperaturernvalue=24rnunit=Crnrn為了對大量的測試數據有個統計和分析,希望能夠批量將這些文件中的測量值導入到一個數據庫中,數據庫的種類可以不限制,比如Excle、Access、SQLServer、Oracle都可以考慮。rnrn我目前的想法是用C#和SQLServer來完成,讀取目錄下的每個文件,并過濾出相應的數據,記錄到數據庫中,請問有沒有什么更快捷方便的方法,謝謝rnrn如果應用C#和SQLServer,請問對同一文件夾下的非文本文件該如何用記事本讀取?只要文件能夠用記事本打開并格式正確,就可以把他認為是文本文件進行處理.
象這種格式的數據沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當讀到完整的記錄時執行SQL語句插入到數據庫中.
只要你的文件能夠用記事本打開并格式正確,就可以把他認為是文本文件進行處理.
象這種格式的數據沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當讀到完整的記錄時執行SQL語句插入到數據庫中.
把文本文件轉成一個的格式,比如用逗號分隔
111,234,fsgds,45645,ghjgh,sdf
dfg,fgh,fghf,dfgh,dfgdf,gdfg,
tryer,yery,ret,ertey,uti,yuiyu
是可以在數據庫中直接導入的
參考:http://hi.baidu.com/gisland/blog/item/b658666322d103670d33fa2a.html
asp.net/c#代碼實現excel to mssql數據導入
2008年12月17日 星期三 13:42
做網站項目時,可能會遇到將excel文件中的數據導入至sql server數據庫的需求,把excel也看作數據庫,使用OleDb連接后讀取數據然后寫入用SqlClient連接的sql server數據庫即可,技術上沒有什么難度。
但是需要考慮的一個問題是,系統安裝的環境一般是專用sql server服務器+web服務器+客戶端,而excel文件往往在客戶端導入,如果直接使用sql語句讀取的話,由于sql在web服務器上運行,不能讀取到客戶端的excel地址,就會出錯了。
既然知道了錯誤的原因,解決方案也就有了:
1、把客戶端的excel上傳至web服務器上某文件夾,注意要給該文件夾設置網絡用戶的“寫入”權限;
2、使用OleDb+sql語句讀取web服務器上的excel文件
3、將讀取的數據寫入到sql server 數據庫
4、將web服務器上的臨時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數據
for (i = 3; i <= totalrow; i++)//將Excel文件中第一個工作表的數據導入到sql數據庫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('數據導入錯誤,請檢查Excel文件')</script>");
return;
}
}
FileInfo file = new FileInfo(Server.MapPath("fileupload/") + filename);
if (file.Exists)
{//刪除文件
file.Delete();
}
protected void DoSql(string sql)//執行sql語句的函數
{
SqlConnection conn = new SqlConnection();//創建連接對象
conn.ConnectionString = ConfigurationManager.AppSettings["conn"].ToString();//給連接字符串賦值
conn.Open();//打開數據庫
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();//
conn.Close();//關閉數據庫
}
注:
1、本文代碼均取自我最近剛做的一個小項目,部分數據有較強針對性,并不通用,只有思路通用
2、由于能力和水平問題,部分代碼顯得有些笨拙,若能靈活運用存儲過程,應能大幅度簡化代碼
asp.net/c#代碼實現excel to mssql數據導入
2008年12月17日 星期三 13:42
做網站項目時,可能會遇到將excel文件中的數據導入至sql server數據庫的需求,把excel也看作數據庫,使用OleDb連接后讀取數據然后寫入用SqlClient連接的sql server數據庫即可,技術上沒有什么難度。
但是需要考慮的一個問題是,系統安裝的環境一般是專用sql server服務器+web服務器+客戶端,而excel文件往往在客戶端導入,如果直接使用sql語句讀取的話,由于sql在web服務器上運行,不能讀取到客戶端的excel地址,就會出錯了。
既然知道了錯誤的原因,解決方案也就有了:
1、把客戶端的excel上傳至web服務器上某文件夾,注意要給該文件夾設置網絡用戶的“寫入”權限;
2、使用OleDb+sql語句讀取web服務器上的excel文件
3、將讀取的數據寫入到sql server 數據庫
4、將web服務器上的臨時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數據
for (i = 3; i <= totalrow; i++)//將Excel文件中第一個工作表的數據導入到sql數據庫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('數據導入錯誤,請檢查Excel文件')</script>");
return;
}
}
FileInfo file = new FileInfo(Server.MapPath("fileupload/") + filename);
if (file.Exists)
{//刪除文件
file.Delete();
}
protected void DoSql(string sql)//執行sql語句的函數
{
SqlConnection conn = new SqlConnection();//創建連接對象
conn.ConnectionString = ConfigurationManager.AppSettings["conn"].ToString();//給連接字符串賦值
conn.Open();//打開數據庫
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();//
conn.Close();//關閉數據庫
}
注:
1、本文代碼均取自我最近剛做的一個小項目,部分數據有較強針對性,并不通用,只有思路通用
2、由于能力和水平問題,部分代碼顯得有些笨拙,若能靈活運用存儲過程,應能大幅度簡化代碼 只要你的文件能夠用記事本打開并格式正確,就可以把他認為是文本文件進行處理.
象這種格式的數據沒有什么太好的辦法,只有從文本文件中逐行讀取解析,當讀到完整的記錄時執行SQL語句插入到數據庫中.
如何將一個txt文檔的數據批量導入到數據庫?
這個txt是什么樣的格式?如果有規律的格式,可以先將txt讀取到DataTable中,然后循環datatable中的數據插入到數據庫中。
用BCP命令
編寫和執行存貯過程:
CREATE PROCEDURE IMPORTTXT
@DBNAME VARCHAR(100)--數據庫名
AS
DECLARE @SQLSTRING NVARCHAR(1000)
Set @SqlString=N'Master..xp_CmdShell ''bcp '+@dbname+'.DBO.TABLENAME in C:\CSVFILE.TXT -c -S'+@@servername+' -USA -P'''
execute sp_executesql @SqlString
GO
該過程將C:\CSVFILE.TXT 導入到TABLENAME表中,要求字段結構相符。TXT文檔要求是以制表符為字段間隔符,換行為記錄間隔。可以直接使用EXCEL導出的“以制表符分隔的文本文檔”,或將文本文檔轉換成該格式。
你需要寫一個讀取類 ,把它讀到數組里面 用Datareader
PHP編程:有沒有辦法把txt文件批量導入mysql數據庫.
一批10000個txt文件,一個文件為一篇文章,我想導入mysql,第一行為標題,其余為內容,有沒有方法實現?首先10000txt文件要起一個有規律的名稱。例如按數字大小。這樣便于循環。
如果不是這樣,也可以做,但是要遍歷目錄,判斷文件。
$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(文件地址);
//把數據插入數據庫,記得在把內容向表里插的時候要加addslashes(),$str_arr[0]就是標題,$str_arr[1]就是內容
}
}
function get_txt($file){
$str = file_get_contents($file);
$str_arr = preg_split('|\n|',$str);
return $str_arr;
}
建議把10000個文件分成多份執行,避免數據庫跑死
自己寫程序咯,file_get_contents()就可以或是直接file()按行讀入數組,x[0]為標題,x[1]為內容.
可以的
相關推薦:
電影版權問題(微電影版權問題)
馳名商標查詢(如何查詢中國馳名商標)
保密與競業限制協議(保密協議與競業限制協議的區別)
專利侵權申訴(被投訴知識產權侵權怎么申訴)
知識產權法院(知識產權法院是中級法院嗎)