我想将一个表从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>
答案 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)