2013-02-14 1 views
0

Относительно новый для SAS и предназначенный для загрузки данных в виде данных - dbm с ограниченным доступом - в базу данных MySQL. У меня есть основы, прибитые к минимуму, я все равно верю, но я не понимаю, как сказать SAS о начале и окончании строки данных. Текущий синтаксис ...Bulkload w/Proc Append

proc append base=abc.metrics (bulkload=yes 
                  bl_delimter='|' 
                  bl_options='errors=0' 
                  bl_delete_datafile=no) 
data=abc_metrics_&jid; 
run; 

Любые мысли, рекомендации и комментарии будут оценены по достоинству.

+0

Вы уже ввели это в набор данных SAS? – Joe

+0

@Joe Я ввел его в набор данных – Atwp67

+0

Что вы подразумеваете под «началом и окончанием строки данных»? Если он находится в наборе данных SAS, SAS уже имеет его в формате строки. – Joe

ответ

1

Я не думаю, что вы можете непосредственно сделать это для MySQL: http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a002938849.htm http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001752476.htm

Однако вы можете записать файл самостоятельно. Измените sashelp.class на ваш набор данных, файл «\ server \ yourfile.dlm», и если вам нужно | после последней записи до ~, удалите это + (- 1).

data _null_; 
set sashelp.class; 
file "c:\temp\test.dat" dlm='|' lrecl=32767; 
put "!" @; 
put name $ age height weight @; 
put +(-1) "~"; 
run; 

Тогда вы можете вызвать массовое загрузочное средство MYSQL (независимо от того, что есть), как обычно; Вы можете быть в состоянии использовать транзитное соединение, т.е.

proc sql; 
connect to odbc (connection-information); 
execute ("load file.dlm into table") by odbc; 
quit; 

(очевидно, плохой синтаксис SQL, но это понятие - что-то в том, что «» выполняется непосредственно на поле MySQL в качестве кода MySQL, как если бы вы были в интерфейсе БД).

Или, если у MySQL есть что-то вроде SQL * Loader от Oracle, вы можете вызывать это из командной строки, если у вас есть к нему доступ, используя команду «x».

+0

Если я собираю то, что вы говорите, я могу извлечь из фактического набора данных SAS, а не из файла dlm (?). – Atwp67

+0

Вглядываясь в него больше, это, похоже, не работает для MYSQL. Он работает для SQL Server, но даже Oracle не работает так, как я думал. – Joe

+0

libname abc odbc datasrc = abc user =? пароль = ?; – Atwp67

1

Насколько я знаю, вы не можете напрямую загрузить «массовую загрузку» из SAS в MySQL, см. this note в руководстве SAS Access.

Итак, лучше всего создать текстовый файл с разделителями (возможно, с PROC EXPORT) и использовать служебную программу mysql. Вот a previous SO question с различными решениями, особенно с командой load data local infile.