| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 «  : 26-04-2006 04:50 »   | 
								
								 | 
							  
							 
							Есть файл *.dbf (один столбец в нем дробное число) его нужно подгрузить в MySql. Конвертирую dbf в txt (select * from ... и результат запроса записываю как строку в файл). При подгрузке в MySql текстового файла (load data infile) получаю исключение: Data Truncated from столбец в котором находится дробное число. В таблице MySql тип данных неподгружаемого столба double, в dbf не знаю какой тип, т.к. запрос describe table вызывает исключение. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RomCom
							
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 26-04-2006 05:12 »   | 
								
								 | 
							  
							 
							Возможно разделитель  дробной части не нравится. А не проще на самом сервере средствами php открыть *.dbf и переписать в MySql? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Mouse
							
								Молодой специалист 
								
								 
								  Offline
								
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									«  Ответ #2 : 26-04-2006 06:34 »    | 
								
								 | 
							  
							 
							h.m.f., в сети можно найти готовые конвертеры DBF -> mySQL, поищи. Если что, вечерком могу поискать у себя, вроде должны быть исходники на PHP 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 26-04-2006 06:47 »   | 
								
								 | 
							  
							 
							Когда я формирую текстовый файл, специально заменяю запятую на точку, чтобы не было проблем в MySql. Мне кажется, что проблема в количестве знаков после запятой или разрядности типов...  Подгрузка в MySql текстового файла - часть кода программы (которая написана на C# поэтому промежуточный пункт с использованием пхп  и различных вспомогательных программ отпадает (к тому же скачанная программка dbf2mysql работает для моей таблички 1.5часа!!! против моих нескольких минут(если не подгружать этот фигов столбец с дробными числами) ) 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RomCom
							
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 26-04-2006 06:50 »   | 
								
								 | 
							  
							 
							приведи пример пары строк файла txt и желательно кусок кода C# вставляющий данные  а то так долго гадать можно. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 26-04-2006 06:53 от RomCom »
								 | 
								
									 
									Записан
								 | 
							  
							 
							R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 26-04-2006 06:58 »   | 
								
								 | 
							  
							 
							В MySQL очень простая интерпретация аргументов: если аргумент не может быть распознан как целое число, как строка и т.д., то он считается _действительным_числом_ и если его формат не напоминает соотв. число, то результат == 0. Так было сказано в документации еще по 3.23 - стоит проверить для своей версии.
  h.m.f., приведи текст ошибки и строку, на которой сбойнуло. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 26-04-2006 07:49 »   | 
								
								 | 
							  
							 
							Пара строк (данные разделены табами): 5741А13В1.6-40/ФЛ   Комплект ответных фланцев с крепежом к насосу А1 3В1.6/40   5741   1   38.86 5741А13В1.6/40   Насос А1 3В1.6/40-3/25Б, 7.5 кВт, без КИП, "Ливгидромаш"   5741   1   3550 В принципе любая строка файла вызывает данное исключение даже если в последнем столбце стоит 0.
  Код который вставляет: string CatTextFile=@"c:\\odbcTablesFormat.txt"; MyCmd.CommandText="load data infile '" + CatTextFile + "' into table rs.cat";       MyCmd.ExecuteNonQuery(); Версия MySql 5
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 19-12-2007 19:28 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 26-04-2006 08:03 »   | 
								
								 | 
							  
							 
							h.m.f., полный текст ошибки приведи. В результате ни одна строка не вставлена? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 26-04-2006 08:42 »   | 
								
								 | 
							  
							 
							An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in mysql.data.dll
  Additional information: #01000Data truncated for column 'price' at row 1 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 19-12-2007 19:31 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 26-04-2006 13:19 »   | 
								
								 | 
							  
							 
							Если в таблице MySql поменять тип последнего столбца с double на varchar, то текстовый файл подгружается без проблем. Хотя хочется понять с чем всетаки связан этот глюк... 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 26-04-2006 20:46 »   | 
								
								 | 
							  
							 
							h.m.f., а как на счет содержимого (после смены на varchar)? Приведи те же строчки, что соответствуют исходным, приведенным выше. Просто, сдается мне, затык в распозновании границ полей в исходном файле. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 27-04-2006 04:13 »   | 
								
								 | 
							  
							 
							Строки из таблицы MySQl:
  5741А13В1.6-40/ФЛ Комплект ответных фланцев с крепежом к насосу А1 3В1.6/40 5741 1 38.86  5741А13В1.6/40 Насос А1 3В1.6/40-3/25Б, 7.5 кВт, без КИП, "Ливгидромаш" 5741 1 3550 
  Пока их сюда копировал, заметил что в последнем столбце после самих данных стоит еще и пробел (в остальных столбах такого не наблюдается), а в текстовом файле пробелов нет... 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RomCom
							
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 27-04-2006 04:56 »   | 
								
								 | 
							  
							 
							Протестировал приведенные строка через phpMyAdmin (MySQL 3.23.53), все нормально отрабатывает. Попробуй в файле оставить одну страку и запустить вставку. а в текстовом файле пробелов нет...
  Проверь в редакторе показывающем не печатные символы. Возможно всетаки где то закрался ненужный пробел. Или приаттач кусок самого файла нам на проверку на наших машинах  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 27-04-2006 05:26 »   | 
								
								 | 
							  
							 
							Таблица МуSQL: CREATE TABLE `cat` ( `ware` varchar(30) NOT NULL, `warename` varchar(250) default NULL, `head` varchar(30) default NULL, `base` int(11) default NULL, `price` double default NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1 Код c# уже описал, текстовый файл во вложении... 
						 | 
					 
					
						
							
								
									 
									
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RomCom
							
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 27-04-2006 06:18 »   | 
								
								 | 
							  
							 
							через phpMyAdmin: load data infile 'd:\\odbcTablesFormat.txt' into table cat; Вставляется без проблем  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 19-12-2007 19:32 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
							 
							R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #15 : 27-04-2006 08:56 »   | 
								
								 | 
							  
							 
							RomCom, а какая у тебя версия MySql?  У меня этот запрос написанный в чистом mySql 5 (без С#) с этим файлом все равно выдает data truncated... 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RomCom
							
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 28-04-2006 00:36 »   | 
								
								 | 
							  
							 
							Запрос я выполнял на локальном компе где установлен Денвер -phpMyAdmin 2.5.6, MySQL 3.23.53-max 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							h.m.f.
							
						 | 
						
							
								  | 
								
									
									 « Ответ #17 : 09-06-2006 07:37 »   | 
								
								 | 
							  
							 
							Наконец-то нашел решение этой проблемы!!!
  Нашел на каком-то сайте: если у вас MySql 5 версии из значения переменной sql-mode файла my.ini нужно убрать STRICT_TRANS_TABLES.
  Может кто-нибудь пояснить, что за значение такое и на что оно влияет. Я его удалил и все заработало, но кто знает, может в будущем возникнет другой глюк из-за ее отсутствия
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |