Экспорт данных из SQL и запись в файл etxt (BCP или SP не могут использоваться) - PullRequest
2 голосов
/ 29 июня 2011

Поэтому я ищу простой способ экспортировать данные из базы данных SQL Server 2000 и записать их в текстовый файл с разделителями-запятыми. Его одна таблица и только около 1000 строк. Я новичок в C #, поэтому извините, если это глупый вопрос.

Ответы [ 3 ]

6 голосов
/ 30 июня 2011

Это очень простая задача, но вам необходимо изучить пространство имен SqlClient и различные объекты, которыми вы располагаете.Вы можете заметить, что асинхронные методы SQL Server 2000 и более ранних версий не поддерживаются, поэтому все они будут блокироваться.

Имейте в виду, это очень схематичный пример, и я не проверял это, но этобыл бы один общий подход.

string connectionString = "<yourconnectionstringhere>";
using (SqlConnection connection = new SqlConnection(connectionString)) {
    try {
        connection.Open();
    }
    catch (System.Data.SqlClient.SqlException ex) {
        // handle
        return;
    }
    string selectCommandText = "SELECT * FROM <yourtable>";
    using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommandText, connection)) {
        using (DataTable table = new DataTable("<yourtable>")) {
            adapter.Fill(table);
            StringBuilder commaDelimitedText = new StringBuilder();
            commaDelimitedText.AppendLine("col1,col2,col3"); // optional if you want column names in first row
            foreach (DataRow row in table.Rows) {
                string value = string.Format("{0},{1},{2}", row[0], row[1], row[2]); // how you format is up to you (spaces, tabs, delimiter, etc)
                commaDelimitedText.AppendLine(value);
            }
            File.WriteAllText("<pathhere>", commaDelimitedText.ToString());
        }
    }
}

Некоторые ресурсы, которые вы хотите изучить:

Я также не уверен, каковы ваши требования или почему вы должны выполнить эту задачу, но, вероятно, существует довольно много инструментов, которые уже могут сделать это длявы (если это разовая вещь), потому что это не редкая задача.

0 голосов
/ 30 июня 2011

Вы делаете это в приложении Windows Form?Если вы связали данные с элементом управления, таким как DataGridView, это довольно легко сделать.Вы можете просто перебрать элемент управления и записать файл таким образом.Мне это нравится, потому что, если вы внедрили механизмы фильтрации в свое приложение, все, что отфильтровано пользователем, может быть записано в файл.Вот как я делал это раньше.Вы должны иметь возможность настроить это, если вы используете какую-то коллекцию без особых проблем.

private void exportCsv()
    {
        SaveFileDialog saveFile = new SaveFileDialog();
        createSaveDialog(saveFile, ".csv", "CSV (*csv)|*.csv)");
        TextWriter writer = new StreamWriter(saveFile.FileName);
        int row = dataGridView1.Rows.Count;
        int col = dataGridView1.Columns.Count;

        try
        {
            if (saveFile.FileName != "")
            {
                for (int i = 0; i < dataGridView1.Columns.Count; i++)
                {
                    writer.Write(dataGridView1.Columns[i].HeaderText + ",");
                }

                writer.Write("\r\n");
                for (int j = 0; j < row - 1; j++)
                {
                    for (int k = 0; k < col - 1; k++)
                    {
                        writer.Write(dataGridView1.Rows[j].Cells[k].Value.ToString() + ",");
                    }
                    writer.Write("\r\n");
                }
            }
            MessageBox.Show("File Sucessfully Created!", "File Saved", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        catch
        {
            MessageBox.Show("File could not be created.", "Save Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            writer.Close();
            saveFile.Dispose();
        }

    }
0 голосов
/ 29 июня 2011

В C # это ничем не отличается от любого другого языка с необходимыми инструментами.

1) Запрос БД и сохранение данных в коллекции
2) Записать коллекцию в файл в формате CSV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...