#jdbc #sas #snowflake-cloud-data-platform #connect
Вопрос:
Я не могу выбрать данные из таблиц снежинок в своей библиотеке. Я могу видеть данные в библиотеке в представлении папок SAS Enterprise Guide, но при попытке их выбора я получаю различные ошибки. Я использую сетку SAS и пытаюсь доказать, что могу подключиться к Snowflake с помощью JDBC.
Что я делаю не так?
/*I see content in the library within SAS Enterprise Guide*/
libname snow1 jdbc driver='net.snowflake.client.jdbc.SnowflakeDriver'
classpath='/sas/scripts/snowflake/snowflake-jdbc-3.13.5.jar'
URL='jdbc:snowflake://poc.east-us-2.azure.snowflakecomputing.com'
user="duser"
password="dpass"
schema='DATA_SC';
/* no content */
libname snow11 jdbc driver='net.snowflake.client.jdbc.SnowflakeDriver'
classpath='/sas/scripts/snowflake/snowflake-jdbc-3.13.5.jar'
URL='jdbc:snowflake://poc.east-us-2.azure.snowflakecomputing.com'
user="duser"
password="dpass"
schema='DATA_SC';
database='ANALYTICS_DB';
/* no content */
libname snow2 jdbc driver='net.snowflake.client.jdbc.SnowflakeDriver'
classpath='/sas/scripts/snowflake/snowflake-jdbc-3.13.5.jar'
URL='jdbc:snowflake://poc.east-us-2.azure.snowflakecomputing.com:443/?account=poc.east-us-2.azureamp;warehouse=ANALYST_WHamp;db=ANALYTICS_DBamp;schema=DATA_SC'
user="duser"
password="dpass"
schema='DATA_SC';
database='ANALYTICS_DB';
/*ERROR: Prepare error: net.snowflake.client.jdbc.SnowflakeSQLException: Cannot perform SELECT. This session does not have a current database. Call 'USE DATABASE', or use a qualified name.*/
proc sql;
create table work.snowData51 as
select * from snow1.DENTAL;
run;
/*ERROR: Prepare error: net.snowflake.client.jdbc.SnowflakeSQLException: Cannot perform SELECT. This session does not have a current database. Call 'USE DATABASE', or use a qualified name. */
proc sql;
create table work.snowData512 as
select * from snow11.DENTAL;
run;
/*ERROR: File SNOW2.DENTAL.DATA does not exist.*/
proc sql;
create table work.snowData52 as
select * from snow2.DENTAL;
run;
/*ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, WHERE. */
proc sql;
create table work.snowData71 as
select * from snow1.DATA_SC.DENTAL;
run;
/*ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, WHERE. */
proc sql;
create table work.snowData81 as
select * from snow1.ANALYTICS_DB.DATA_SC.DENTAL;
run;
Комментарии:
1. Можете ли вы запросить любую из этих таблиц, используя явный passthru вместо неявной генерации SQL, которую вы сейчас пытаетесь выполнить?
proc sql; connect using snow1;create table x as select * from connection to snow1 (select * from dental);quit;
2. Разве «база данных» обычно не является частью URL-адреса? Как в этом примере для postgresql из документации
url="jdbc:postgresql://<server>:<port>/myDB"
, поэтому, если вам нужно указать схему в этой базе данных, используйтеschema=
параметр libname или инструкцию connect.3. Можете ли вы попробовать использовать SASTRACE? Это может дать вам более подробную информацию. Также вы видите подробную информацию в раскрывающемся списке таблиц снежинок? ПАРАМЕТРЫ SASTRACE=’,,, d’ SASTRACELOC=saslog NOSTSUFFIX;
4. @Tom Явный пасстру приблизил меня: ОШИБКА: «стоматолог» не существует или не авторизован. При открытии файлов в папках библиотеки в SAS, НАПРИМЕР, ОШИБКА: не удается выполнить ВЫБОР. В этом сеансе нет текущей базы данных. Вызовите «ИСПОЛЬЗОВАТЬ БАЗУ ДАННЫХ» или используйте полное имя.
5. @Tom Я попробовал базу данных как часть URL-адреса, как в libname snow2. Я попробовал несколько комбинаций схемы и базы данных в URL-адресе и в инструкции. Содержимое библиотеки не отображалось.