Лучшие практики для загрузки файлов к базе данных

Не очень хорошо знаком с Rundeck, не говоря уже о непосредственном опыте или способности к тестированию, но эти ', выглядят немного странно в:

procArgs: [ansible-playbook, all.yml -l, 10.100.5.103, -vvv, --private-key=/key/location/id_rsa, --user=slave, --become-method=sudo, --tags=libs,master]
  • , если после [должна быть запятая 111]?
  • должна ли строка в --tags=libs,master быть заключена в кавычки, потому что она содержит буквальную запятую?
6
задан WACM161 13 November 2008 в 17:58
поделиться

4 ответа

Если целостность данных в Вашем DB важна, не позволяйте данным быть импортированными, который имеет ошибки или не отвечает требованиям проверки Вашего DB.

Так как это файлы Excel, для пользователя должно быть достаточно легко исправить данные в файле Excel, вместо того, чтобы пытаться использовать другой интерфейс для фиксации данных. Просто удостоверьтесь, что сообщения об ошибках направляют пользователя к тому, какое поле является проблемой, и ясно объясните что не так.

1
ответ дан 16 December 2019 в 21:47
поделиться

Вы хотите поместить файлы Excel в DB как блоб? или Вы хотите проанализировать файлы и поместить записи в файлы в дб?

Я предполагаю, что это - последний.

Как пользователь я хотел бы иметь опцию знать то, что ошибки так, я могу зафиксировать их и попробовать еще раз. Я думаю, как я попробовал еще раз, зависит от того, сколько данных я загружаю.

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

До DB. Или имейте отдельную таблицу, в которую входят загрузки, пока они не проверяются и добираются с Вашими "реальными" данными или имеют столбец UploadUniqueId, таким образом, можно откатывать любую загрузку без большого количества суеты.

удалите имя таблицы где UploadUniqueId = 'GUID'

0
ответ дан 16 December 2019 в 21:47
поделиться

Я попробовал бы следующий подход, который работал хорошо в прошлом.

  1. Позвольте пользователю загружать файл, помещать его где-нибудь на диск.
  2. Свяжите результаты файла к некоторой сетке (можно соединиться с файлами Excel с помощью ODBC/OLE DB с помощью традиционного Соединения/Объектов команды).
  3. Примените проверку к строкам в сетке на основе некоторого набора бизнес-правил (данные Excel обычно довольно грязны).
  4. Позвольте пользователю обновлять значения в сетке и корректных проблемах проверки.
  5. Когда все данные являются кошерными, и пользователь доволен ими, выполняют объемную вставку в транзакции.
  6. Если что-нибудь "плохо" происходит откат, и представьте некоторые отзывы пользователей.
5
ответ дан 16 December 2019 в 21:47
поделиться

Необходимо загрузить данные и затем отметить их, если они приводят проверки проверки к сбою. Для того, чтобы на самом деле загрузить данные, у Вас есть несколько опций:

  • Объемная загрузка ADO.NET API - использует объемную загрузку API для помещения его в таблицу подготовки. Отрывок ниже показывает процесс, чтобы открыть файл.CSV и программно загрузить его в таблицу подготовки.

.

  public void Load() {
        bool OK = File.Exists(_filename);
        if (OK) {
            string sql = String.Format("Select * from {0}", FileName);
            OleDbConnection csv = new OleDbConnection();
            OleDbCommand cmd = new OleDbCommand(sql, csv);
            OleDbDataReader rs = null;
            SqlConnection db = null;
            SqlCommand clear = null;

            SqlBulkCopy bulk_load = null;
            try {
                    // Note two connections: one from the csv file
                    // and one to the database;
                    csv = new OleDbConnection();
                    csv.ConnectionString = ConnectionString;
                    csv.Open();
                    cmd = new OleDbCommand(sql, csv);
                    rs = cmd.ExecuteReader();

                    // Dung out the staging table
                    db = // [Create A DB conneciton Here]
                    clear = new SqlCommand("Truncate table Staging", db); // Left to the reader
                    clear.ExecuteNonQuery();

                   // Import into the staging table
                    bulk_load = new SqlBulkCopy(db);
                    bulk_load.DestinationTableName = Destination; // Actually an instance var
                    bulk_load.WriteToServer(rs);
                } catch (Exception ee) {
                    string summary = ee.Message;
                    string detail = ee.StackTrace;
                    //Notify(DisplayType.error, summary, detail);
                } finally {
                    if (rs != null) rs.Close();
                    if (csv != null) csv.Close();
                    if (bulk_load != null) bulk_load.Close();
                }
            }
        }
  • Используйте BCP или SSIS для импорта его, или непосредственно из электронной таблицы или из.CSV файла.
2
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: