如何使用C#从mysql数据库导出/下载表?

时间:2010-10-03 08:17:22

标签: c# .net mysql

我想将一个表从mysql数据库导出到txt或csv文件,就像你在phpmyadmin中一样。我目前使用下面的代码,但是在程序运行几个小时后,它会抛出“试图读过流”的错误。

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();

但是它一直给我一个“拒绝用户'admin'@'myip'(使用密码:YES)”错误,其中myip确实是我的ip而不是服务器,即使在MyConString中指定了服务器IP。 / p>

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

SELECT * INTO OUTFILE 't:/mysqldump.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM mytable

请记住,MySql进程的所有者必须具有在给定位置写入的权限。

答案 1 :(得分:0)

你好几年前使用xsl做了类似的事情。我收到了来自Web服务的xml并将其转换为csv文件,以传递给将数据插入某些表的批处理。这不完全是您的情况,但数据集提供了导出到xml的方法。记录数可能有问题(填充数据表的时间很长),您必须添加一个步骤(从数据集到xml再到csv)