The answer to your question might involve the HOW data is stored in Excel.
I just ran into the same problem. I had a column containing two types of values: numeric and numeric with a dash. (ex. 51000 and 2009-00949) I needed to import them as either NVARCHAR or VARCHAR, but the SQL import wizard (SQL2005) would only import the numerics and not the numerics with a dash or the numerics with a dash and not the numerics, depending on which type was in the first record. The values which were not imported would have a ‘null’ value in the field, rendering my records useless.
I tried using the Format|Cells menu option in Excel (numeric, text, general, etc) and various mapping options in SQL (nvar, nvarchar, varchar, sqlvariant, float) without success.
The solution was to use the Data|Text To Columns option in Excel, not the cell formatting option to store the numeric value as text. When I used this on the column, the numeric values (ex. 51000) converted to numbers stored as a text value (little green triangle error appeared in the upper left corner), the numerics with a dash remained as text. I had to leave the data in this format, with the little green triangle error, otherwise it would not successfully import to SQL. When the data in the column was stored in this format, the two types of column data (numeric and numeric with a dash) imported correctly with the other record data, no null values in the column.
Суть в том что при импорте из дампа .sql возникает ошибка в синтаксисе внутри файла и заливка в базу останавливается. Так вот, как сделать так чтобы при заливке дампа в базу ошибки просто игнорировались и проблемные места пропускались, а импорт шел дальше?
-
Вопрос заданболее двух лет назад
-
1719 просмотров
Используйте флаг —force, -f
—force, -f
Ignore all errors; continue even if an SQL error occurs during a table dump.
One use for this option is to cause mysqldump to continue executing even when it encounters a view that has become invalid because the definition refers to a table that has been dropped. Without —force, mysqldump exits with an error message. With —force, mysqldump prints the error message, but it also writes an SQL comment containing the view definition to the dump output and continues executing.
If the —ignore-error option is also given to ignore specific errors, —force takes precedence.
https://dev.mysql.com/doc/refman/8.0/en/mysqldump….
Пригласить эксперта
-
Показать ещё
Загружается…
12 июн. 2023, в 16:06
25000 руб./за проект
12 июн. 2023, в 15:59
2000 руб./за проект
12 июн. 2023, в 15:24
1500 руб./за проект
Минуточку внимания
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
1 |
|
18.04.2016, 08:59. Показов 18740. Ответов 20
Добрый день. Столкнулся с проблемой импорта данных в ms sql. Выдает ошибку — Выполнение (Ошибка) Ошибка 0xc0209029: Задача потока данных 1: Код ошибки служб SSIS: DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Сбой выходной столбец «clu_UserID» (63) из-за возникновения ошибки с кодом 0xC020907F, и стратегия обработки ошибок строк в «выходной столбец «clu_UserID» (63)» определяет сбой по ошибке. Ошибка возникла в указанном объекте указанного компонента. Возможно, до этого были опубликованы сообщения об ошибках, в которых содержатся более подробные сведения о причине сбоя. Ошибка 0xc0047022: Задача потока данных 1: Код ошибки служб SSIS DTS_E_PROCESSINPUTFAILED. Метод ProcessInput в компоненте «Преобразование данных 0 — 0» (47) завершился сбоем с кодом ошибки 0xC0209029 при обработке входа «Входные данные преобразования данных» (48). Указанный компонент возвращает ошибку при вызове метода ProcessInput. Данная ошибка относится к компоненту, но является неустранимой и приводит к остановке выполнения задачи потока данных. Возможно, до этого были выданы сообщения об ошибках, в которых содержатся более подробные сведения о причине сбоя. Данные из экселя. 4 простых столбца Подскажите, в чем ошибка?
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
18.04.2016, 08:59 |
Ответы с готовыми решениями: Запись данныз из DataGridView в БД SQL Импорт с XLS Импорт из файла XLS Импорт *.xls и *.xlsx 20 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 09:13 |
2 |
Выдает ошибку вы покажите как выделаете импорт
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
18.04.2016, 09:21 [ТС] |
3 |
Версия сервера Microsoft SQL Server 2008 R2 (RTM) — 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2) Принцип простой:выбираю импорт данных,источник-файл эксель,выбираю куда вставить(пароль,бд),выбираю копировать все данные из 1 или неск-х таблиц,далее источник Лист1$,назначение таблицу SQL,далее готово. Если нужны скрины, могу выложить.
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 09:48 |
4 |
а может вы в студии сделаете запрос и скопируете его в эксель? у вас скорее всего проблема в разрядности сервера и клиента
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
18.04.2016, 09:52 [ТС] |
5 |
а может вы в студии сделаете запрос и скопируете его в эксель? Проблему решил. почему-то вставляет только удалением всех данных,так же проблема была с PK.
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 09:54 |
6 |
Проблему решил. это понял
почему-то вставляет только удалением всех данных,так же проблема была с PK. это нет
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
18.04.2016, 10:31 [ТС] |
7 |
Действия,которые сделал. Добавлено через 23 секунды Ошибка 0xc020901c: Задача потока данных 1: Ошибка входной столбец «RecordDate» (141) в вход «Destination Input» (63). Возвращено состояние столбца: «Значение противоречит ограничениям целостности для столбца.». Ошибка 0xc0209029: Задача потока данных 1: Код ошибки служб SSIS: DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Сбой вход «Destination Input» (63) из-за возникновения ошибки с кодом 0xC020907D, и стратегия обработки ошибок строк в «вход «Destination Input» (63)» определяет сбой по ошибке. Ошибка возникла в указанном объекте указанного компонента. Возможно, до этого были опубликованы сообщения об ошибках, в которых содержатся более подробные сведения о причине сбоя. Ошибка 0xc0047022: Задача потока данных 1: Код ошибки служб SSIS DTS_E_PROCESSINPUTFAILED. Метод ProcessInput в компоненте «Назначение — A_People» (50) завершился сбоем с кодом ошибки 0xC0209029 при обработке входа «Destination Input» (63). Указанный компонент возвращает ошибку при вызове метода ProcessInput. Данная ошибка относится к компоненту, но является неустранимой и приводит к остановке выполнения задачи потока данных. Возможно, до этого были выданы сообщения об ошибках, в которых содержатся более подробные сведения о причине сбоя.
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 10:37 |
8 |
сделайте запрос в студии и скопируйте в эксель
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
18.04.2016, 10:38 [ТС] |
9 |
Запрос типа insert?
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 10:50 |
10 |
mansitto, какой INSERT?
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
18.04.2016, 10:52 [ТС] |
11 |
Итак.В новых данных было при создании таблицы указано Одновременно,я пытался залить datetime в новом файле в этот столбец. Удалил все значения,сделав поле пустым,и вставил без проблем. Добавлено через 23 секунды
выполните SELECT, а потом скопируйте результат в эксель Да)перепутал..но все сделал Добавлено через 37 секунд
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 10:55 |
12 |
я все делал если вам надо один раз такое сделать — делайте в студии
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
18.04.2016, 19:34 [ТС] |
13 |
да,с полем RecordDate я разобрался. — Выполнение (Ошибка) Типы поля varchar,длина 100. Почему усекается?
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
18.04.2016, 21:41 |
14 |
а что ты делаешь?
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
19.04.2016, 08:33 [ТС] |
15 |
Импорт—указываю эксель—указываю таблицу—добавить строки в целевую таблицу—разрешить ставки в столбец идентификаторов—ок—ошибка. В файле около 250 записей. Все символьные,ограничение в полях varchar 100 Добавлено через 10 часов 46 минут
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
19.04.2016, 08:57 |
16 |
почему не сделать запрос в студии?
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
19.04.2016, 10:12 [ТС] |
17 |
почему не сделать запрос в студии? Потому что я хочу понять в чем проблема. Не зря же придумали возможность юзания визарда и эксель файла..
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
19.04.2016, 11:01 |
18 |
так вы сначала данные в эксель получите, работу сделайте
0 |
7 / 7 / 2 Регистрация: 24.02.2014 Сообщений: 178 |
|
19.04.2016, 20:55 [ТС] |
19 |
так вы сначала данные в эксель получите, работу сделайте Данные к эксель,разумеется,есть..Вопрос немного друго плана.Опиши ,пока,без подробностей. Есть отчет,который запускает процедуру. В этой процедуре 10 вх. параметров,5 из них -это PK других таблиц. Вопрос таков:можно ли как-то переписать процедуру,чтобы залить табличные данные?
0 |
5095 / 4106 / 1029 Регистрация: 29.08.2013 Сообщений: 26,045 Записей в блоге: 3 |
|
19.04.2016, 21:14 |
20 |
конечно
0 |
One Click Feedback
Please help us to improve the site by rating the quality of this article
by clicking a button below.
Excellent |
Good |
Average |
Poor |
Awful |
The SQL Server Import and Export Wizard is useful for copying data from one data source (e.g. a SQL Server database) to
another. Although the interface is fairly simple there are a few “gotchas” to be aware of. Here are a few issues I’ve
found while loading data from one SQL Server database into another.
Identity Columns
The wizard doesn’t treat identity columns any differently to other columns, so will usually fail when trying to insert data into a
table that has an identity column. However the error message can be a bit misleading :
— Validating (Error)
Messages
• Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column «SystemInformationID».
(SQL Server Import and Export Wizard)
• Error 0xc0202045: Data Flow Task 1: Column metadata validation failed.
(SQL Server Import and Export Wizard)
• Error 0xc004706b: Data Flow Task 1: «component «Destination — BuildVersion» (28)» failed validation and returned validation status «VS_ISBROKEN».
(SQL Server Import and Export Wizard)
• Error 0xc004700c: Data Flow Task 1: One or more component failed validation.
(SQL Server Import and Export Wizard)
The issue here is that the ‘SystemInformationID’ column in this table is defined as an identity column, although that’s
not immediately obvious from the error message. Fortunately there is an easy solution in that you can select an option in
the wizard to allow specific values to be inserted into the identity column, much like you can with a SQL query. To do this
select the relevant tables in the ‘Select Source Tables and Views’ page by clicking the checkbox in the header for all tables,
or you can just select which tables you want copying. Make sure the tables you want are actually selected (i.e. not just
checked). In my case I’ve just selected all the tables in my database :
Click on the ‘Edit mappings…’ button towards the bottom of the screen and the following window should appear:
If you select the ‘Enable identity insert’ as indicated in the picture above then the values of any identity columns will
simply be copied across from the source database.
Timestamp Columns
The wizard will also attempt to copy any timestamp columns in the same way it would for a column of any other data type. Unfortunately
timestamp columns can’t be explicitly set to a specific value so this will always fail. If you try it then you will probably get an
error message like this one (obviously the column name will be different for you) :
— Validating (Error)
Messages
• Error 0xc0202048: Data Flow Task 1: Attempting insertion into the row version column «LastUpdated». Cannot insert into a row version column.
(SQL Server Import and Export Wizard)
• Error 0xc0202045: Data Flow Task 1: Column metadata validation failed.
(SQL Server Import and Export Wizard)
• Error 0xc004706b: Data Flow Task 1: «Destination 4 — Customer» failed validation and returned validation status «VS_ISBROKEN».
(SQL Server Import and Export Wizard)
• Error 0xc004700c: Data Flow Task 1: One or more component failed validation.
(SQL Server Import and Export Wizard)
Error 0xc0024107: Data Flow Task 1: There were errors during task validation.
(SQL Server Import and Export Wizard)
Again the error is perhaps a bit misleading as there is no mention of ‘timestamp’, but row version is just a
synonym for timestamp. The solution is to not copy any columns that are timestamps. To do this you just need to click
the ‘Edit Mappings…’ in the ‘Select Tables and Views’ screen for the table in question. This should display a screen
similar to this one :
As you can see in my table the ‘LastUpdated’ column is a timestamp column. To stop the error occurring just set the
destination to ‘ignore’ in the drop down that appears when you click on that cell :
If there is more than one table with a timestamp you’ll need to repeat this for each table.
Constraints
If the table has foreign key constraints on then the chances are you will get a constraint failure message at some point. The Wizard
does not load tables in any specific order for constraints, so it is quite possible that the foreign key table will get loaded
before the table it refers to is loaded, causing a foreign key constraint failure. The error message will be something like :
“The INSERT statement conflicted with the FOREIGN KEY constraint».
The error in the Wizard will probably be similar to :
— Copying to [SalesLT].[ProductDescription] (Error)
Messages
• Information 0x402090e0: Data Flow Task 2: The final commit for the data insertion in «component «Destination 7 — ProductCategory» (207)» has ended.
(SQL Server Import and Export Wizard)
• Information 0x402090e0: Data Flow Task 2: The final commit for the data insertion in «component «Destination 5 — CustomerAddress» (31)» has ended.
(SQL Server Import and Export Wizard)
• Information 0x402090df: Data Flow Task 2: The final commit for the data insertion in «component «Destination 8 — ProductDescription» (262)» has started.
(SQL Server Import and Export Wizard)
• Information 0x402090e0: Data Flow Task 2: The final commit for the data insertion in «component «Destination 8 — ProductDescription» (262)» has ended.
(SQL Server Import and Export Wizard)
• Error 0xc0202009: Data Flow Task 2: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: «Microsoft SQL Server Native Client 10.0» Hresult: 0x80004005 Description: «The statement has been terminated.».
An OLE DB record is available. Source: «Microsoft SQL Server Native Client 10.0» Hresult: 0x80004005 Description: «The INSERT statement conflicted with the FOREIGN KEY constraint «FK_Product_ProductModel_ProductModelID». The conflict occurred in database «AdventureWorksLT2008R2Copy», table «SalesLT.ProductModel», column ‘ProductModelID’.».
(SQL Server Import and Export Wizard)
• Error 0xc0209029: Data Flow Task 2: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The «input «Destination Input» (138)» failed because error code 0xC020907B occurred, and the error row disposition on «input «Destination Input» (138)» specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)
• Error 0xc0047022: Data Flow Task 2: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component «Destination 6 — Product» (125) failed with error code 0xC0209029 while processing input «Destination Input» (138). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
(SQL Server Import and Export Wizard)
The easiest way to get around this is to disable constraints during the load and then re-enable them again afterwards.
To disable all constraints on a specific table run the following SQL (in this case for the Address table) :
ALTER TABLE Address NOCHECK CONSTRAINT ALL
However you’ll need to disable constraints on all tables to be sure of avoiding errors. You can do this with the undocumented stored
procedure sp_MSforeachtable as follows :
EXEC sp_MSforeachtable @command1=»ALTER TABLE ? NOCHECK CONSTRAINT ALL»
This will disable all constraints on all tables. Once the data has been loaded constraints can be re-enabled with the following :
EXEC sp_MSforeachtable @command1=»ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL»
The ‘WITH CHECK’ option specifies that the data is validated against the constraint.
Triggers
If you have triggers in your database then these will not fire when using the import wizard. If you were relying on the
trigger code running then you will need to do this manually once the data is imported.
Added March 2016 :
202 and 200 Data Conversion Errors
When importing or exporting data using a query, the VARCHAR data type is incorrectly recognised as a ‘200’ data type and the NVARCHAR
as a ‘202’ data type. This causes the wizard to fail, with a message similar to that below in the ‘Review Data Type Mapping’ screen.
This is a bug in some versions of SSIS and it only occurs when the data source is a query (rather than a table or view).
The workaround I use is to insert the data from the query into a table, and then use the table as the data source. This avoids
the need to use a query for the data source. An alternative is to create a view that references the query and use that as the data source.
In both cases the table or view can be deleted once the data has been imported.
Битые символы в базе данных образуются, в большинстве случаев, из-за несовпадения кодировок в файле источнике, клиенте БД или таблице БД. Пройдемся по проблемным местам, один из пунктов ниже обычно помогает решать проблемы с «кракозябрями».
1. Файл-источник данных.
С этим пунктом все просто, текстовые данные в файле нужно хранить в utf8. Проверить кодировку можно в большинстве популярных IDE, например, в PhpStorm или текстовом редакторе наподобие Notepad++.
Если нет прямого доступа к БД, то в файл-источник данных следует прописать:
SET NAMES 'utf8' COLLATE 'utf8_general_ci'; -- Для utf8
или
SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci'; -- Для utf8mb4
2. Кодировка и формат сопоставления данных в таблице.
Вероятнее всего вы используете utf8 (он же utf8mb3) или utf8mb4 для хранения данных в MySql. Поэтому при создании таблиц желательно напрямую указывать это, т.к. не всегда общие настройки БД разрешается менять.
Для utf8:
CREATE TABLE `example_table` ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, example_field VARCHAR(255) NOT NULL ) CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB;
Для utf8mb4:
CREATE TABLE `example_table` ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, example_field VARCHAR(255) NOT NULL ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE=InnoDB;
3. Импорт данных из файла-источника.
При импорте тоже желательно указывать кодировку.
Для utf8:
mysql -u USER_NAME -p --default-character-set=utf8 DB_NAME < SOURCE_FILE.sql
Для utf8mb4:
mysql -u USER_NAME -p --default-character-set=utf8mb4 DB_NAME < SOURCE_FILE.sql
4. Веб-интерфейсы.
Иногда требуется заполнять БД из веб-интерфейсов и в этом случае стоит проверять отправляемую кодировку с сервера в заголовках и HTML-коде.
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
PHP:
header('Content-Type: text/html; charset=utf-8');
Полезные команды
Отображение форматов сопоставления данных в MySql:
SHOW VARIABLES LIKE 'collation%';
Отображение настроек кодировок:
SHOW VARIABLES LIKE 'character%';