如何使用C#从mysql数据库导出/下载表?
我想从mysql数据库中将表格导出到txt或csv文件,就像您在phpmyadmin中所做的那样。我目前使用下面的代码,但在程序运行几个小时后,它会抛出“尝试读取流过”错误。如何使用C#从mysql数据库导出/下载表?
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
connection.Open();
command.CommandText = "SELECT * FROM mytable";
MySqlDataReader result = command.ExecuteReader();
if (result != null)
while (result.Read())
{
string thisrow = "";
for (int i = 0; i < result.FieldCount; i++)
thisrow += result.GetValue(i).ToString() + ",";
pass = Regex.Replace(thisrow, @"\W*", "");
if (!hshTable.ContainsKey(pass)) hshTable.Add(pass, pass);
}
connection.Close();
有像myquerystring = "LOAD DATA LOCAL INFILE 'C:/mysqltable.txt' INTO TABLE mytable FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'";
,代替文件加载到数据库它下载表格,而不是一个命令?
好,我试过
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
connection.Open();
myquerystring = "SELECT * INTO OUTFILE 'E:/mysqldump.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM mytable";
command.CommandText = myquerystring;
command.ExecuteNonQuery();
,但它一直给我“拒绝了用户‘管理员’@‘MYIP’访问(使用密码:YES)”,其中MYIP真的是我的IP错误,而不是服务器即使服务器IP在MyConString中指定。
你可以试试这个:
SELECT * INTO OUTFILE 't:/mysqldump.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM mytable
记住MySQL进程的是所有者必须有权在指定位置写。
我试过,但它不断给我一个“访问拒绝用户'管理'@'myip'(使用密码:YES)”错误,其中myip实际上是我的IP而不是服务器,即使服务器IP在MyConString中指定。 – Jon 2010-10-03 22:11:04
请参阅http://dev.mysql.com/doc/refman/5.0/en/select.html#id4599936您必须拥有'FILE'特权。此外'E:\ mysqldump.csv'必须是服务器计算机上的有效路径,而不是您的计算机。因此,如果您的应用程序未与MySQL数据库运行在同一台服务器上,并且您无法访问服务器文件系统,那么最好放弃这个想法。我会尝试将查询结果限制为几千行,重新建立连接并从最后一次转储的行继续。 – 2010-10-25 16:31:42
你好几年前使用xsl做了类似的事情。我从Web服务接收到一个xml,并将其转换为一个csv文件以传递给将数据插入到某些表中的批处理。这不完全是你的情况,但数据集提供了导出到XML的方法。记录数可能是一个问题(填充数据表需要很长时间),您必须添加一个步骤(从数据集到xml,然后到csv)
您是否考虑过使用mysqldump http://dev.mysql.com/ doc/refman/5.1/en/mysqldump.html这个? – 2010-10-03 08:52:51
是的,但第三方应用程序不能用于此项目。它必须通过编码完成。有没有一个MySQL命令我可以执行下载一个表作为一个文件? – Jon 2010-10-03 09:00:41