如何把.txt里的数据读到数据库的表里 现在又.txt的文件,里面有 两列数据(每行有许多行),全是数字的 怎么把它读到数据库的表里,两行数据对应两个字段,最好不要导到excel里了,那样有点麻烦,求各位大牛帮忙!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HDR=YES 的时候,第一行被认为是字段名 HDR=NO 的时候,第一行被认为是数据 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Text;HDR=NO;DATABASE=C:\' --c:\是目录 ,Surveys#txt)--aa#txt是文本文件名aa.txt 一楼的做法我没用过,我一般的做法是,写一个程序,把txt文本一行一行读取,逐条插入数据库 重要的一点是,你要让你的txt文本里面的数据有规律可循 /** 导入文本文件 */EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword' /** 导出文本文件 */EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword' 或 EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword' /**导出到TXT文本,用逗号分开*/ exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password' BULK INSERT 库名..表名 FROM 'c:\test.txt' WITH ( FIELDTERMINATOR = ';', ROWTERMINATOR = '\n' ) 有没有程序实现的啊 大家看下 这段代码哪错了 private void button1_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection ("server=localhost;database=Chartimages;uid=sa;pwd=1234"); SqlTransaction tran = null; try { //把TXT文本转换为datatable string sql = string.Format("select * from [Text;Database={0}].{1}", "D:\\shuju.txt", "shuju.txt"); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter (sql, conn); sda.Fill(dt); if (dt == null) { MessageBox.Show("您导入的文档名字有误!请去掉空格或特殊字符!"); return; } //去掉空行 for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i][0].ToString().Trim() == string.Empty) { dt.Rows.Remove(dt.Rows[i--]); } } //事务开始 tran = conn.BeginTransaction(); SqlCommand cmd = conn.CreateCommand(); cmd.Transaction = tran; for (int i = 0; i < dt.Rows.Count; i++) { string[] str=dt.Rows[i][0].ToString().Split (' ');//用空格区分你的三列 string sql_insert = string.Format("insert into shuju (data1,data2) values ('{0}','{1}')", str[0],str[1]); cmd.CommandText = sql_insert; cmd.ExecuteNonQuery(); } tran.Commit(); MessageBox.Show("导入成功!"); } catch { MessageBox.Show("导入失败!"); //tran.Rollback(); } finally { conn.Dispose(); } } 1。如果是几个文件,不需要一定用程序来做,可以用sqlserer里面的导出数据完成。不过格式需要手动改成只有纯数据的内容,数据格一定一样的,这个用起来很方便,前提是数据表要存在。2.把txt数据读取到缓存中,C#中可以利用OLEDBAdapter 对象。然后对象.upata(缓存表)到数据库,前提是要把缓存表的数据格式好,数据表也要存在 【优化】求助!!!查询数据问题,最好不要用游标 时间比较! 如何删除SQL Server重复数据 聚合函数问题,请高手帮忙! 查找带Text字段的记录 请教,如何用SQL语句将给定的条件生成一个记录集?(详细请进...) 有点急 明早上班要用! 一个数据库问题???? 急等 :用一个存储过程实现在一个表中递归查询并将相应的数据写入第二个表 为什么这两个 SQL语句结果不一样呢 第二个记录集为空 ,第一个呢?????? 取数据问题,求解答。 多表联合的模糊查询,语法哪错了????
HDR=NO 的时候,第一行被认为是数据
select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=NO;DATABASE=C:\' --c:\是目录
,Surveys#txt)--aa#txt是文本文件名aa.txt
重要的一点是,你要让你的txt文本里面的数据有规律可循
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword' /** 导出文本文件 */
EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'
或
EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword' /**导出到TXT文本,用逗号分开*/
exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'
BULK INSERT 库名..表名
FROM 'c:\test.txt'
WITH (
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n'
)
有没有程序实现的啊 大家看下 这段代码哪错了 private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection ("server=localhost;database=Chartimages;uid=sa;pwd=1234");
SqlTransaction tran = null;
try
{
//把TXT文本转换为datatable
string sql = string.Format("select * from [Text;Database={0}].{1}", "D:\\shuju.txt", "shuju.txt");
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter (sql, conn);
sda.Fill(dt);
if (dt == null)
{
MessageBox.Show("您导入的文档名字有误!请去掉空格或特殊字符!");
return;
} //去掉空行
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][0].ToString().Trim() == string.Empty)
{
dt.Rows.Remove(dt.Rows[i--]);
}
}
//事务开始
tran = conn.BeginTransaction();
SqlCommand cmd = conn.CreateCommand();
cmd.Transaction = tran;
for (int i = 0; i < dt.Rows.Count; i++)
{
string[] str=dt.Rows[i][0].ToString().Split (' ');//用空格区分你的三列
string sql_insert = string.Format("insert into shuju (data1,data2) values ('{0}','{1}')", str[0],str[1]);
cmd.CommandText = sql_insert;
cmd.ExecuteNonQuery();
}
tran.Commit();
MessageBox.Show("导入成功!");
}
catch
{
MessageBox.Show("导入失败!");
//tran.Rollback();
}
finally
{
conn.Dispose();
} }
2.把txt数据读取到缓存中,C#中可以利用OLEDBAdapter 对象。然后对象.upata(缓存表)到数据库,前提是要把缓存表的数据格式好,数据表也要存在