본문 바로가기

SQL11

[MySQL] Referencing column 'AA' and referenced column 'BB' in foreign key constraint 'FK40h442pc8wb44wkjpkec435vm' are incompatible. 오류 처리 MySQL에서 발생한 오류 메시지 "Referencing column 'AA' and referenced column 'BB' in foreign key constraint 'FK40h442pc8wb44wkjpkec435vm' are incompatible."는 외래 키 제약 조건을 설정할 때 참조하고자 하는 두 열의 데이터 유형이 서로 호환되지 않음을 의미합니다. 외래 키 제약 조건을 만들거나 변경할 때, 참조하는 열(자식 테이블)과 참조되는 열(부모 테이블)의 데이터 유형이 동일해야 하며, 그 외에도 몇 가지 규칙이 있습니다. 이 오류가 발생하는 원인으로는 다음과 같은 것들이 있을 수 있습니다:데이터 유형 불일치: 참조 열과 참조되는 열의 데이터 유형이 다릅니다. 예를 들어, 하나의 열이 INT이고 .. 2024. 7. 11.
[MySQL] 외래키 제약으로 인한 오류가 발생할 때 체크 끄는 방법 Cannot change column used in a foreign key constraint 오류 처리 테이블의 칼럼 속성을 수정할 때 Cannot change column used in a foreign key constraint 오류가 발생하는 경우가 있습니다 이 오류가 발생하는 경우는 수정하고자 하는 테이블의 속성에 연결되 외부키의 속성이 변경되지 못해서 발생합니다. 이 경우 다음과 같이 해당 옵션을 끄고 작업을 처리할 수 있습니다. SET FOREIGN_KEY_CHECKS = 0; -- 수정 SET FOREIGN_KEY_CHECKS = 1; 2022. 12. 29.
[spark-sql] tez.lib.uris is not defined 오류 처리 방법 Spark SQL을 이용할 때 tez.lib.uris is not defined in the configuration 오류가 발생하는 경우 hive-site.xml파일에 tez 환경 설정을 넣어주면 됩니다. : org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 설정 추가 tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.use.cluster.hadoop-libs true 2020. 1. 14.
[spark] JDBC드라이버를 이용하여 spark sql로 데이터 가져오는 방법 스파크 SQL에서는 JDBC드라이버를 이용해서 데이베이스에 직접 접근해서 정보를 가져올 수 있습니다. spark-shell, spark-submit으로 실행할 때 데이터베이스에 접근하기 위한 jar 파일을 함께 제공해야 합니다. 샘플 코드 import java.util.Properties // 프로퍼티 설정 val prop = new Properties() prop.put("user", "db_user_name") prop.put("password", "db_password") // 데이터베이스 연결 및 뷰 생성 val tableDf = spark.read.jdbc("jdbc:mysql://mysql_url:mysql_port/database_name", "table_name", prop) tableDf.. 2019. 11. 13.
[spark] Unable to instantiate SparkSession with Hive support because Hive classes are not found. 오류 해결 방법 EMR 5.24에서 우지와 스파크 sql을 이용하여 작업을 하려고 하면 다음과 같은 오류가 발생합니다. 에러로그 Caused by: java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found. at org.apache.spark.sql.SparkSession$Builder.enableHiveSupport(SparkSession.scala:870) at com.sec.bigdata3.analyzer.scala.profile.RunestoneProfile$.main(RunestoneProfile.scala:32) at com.sec.bigdata3.. 2019. 11. 8.
[intellij] 인텔리j 파일과 에디터 연결하는 방법 하이브의 hql파일을 sql 에디티로 열어서 문법 하이라이팅 기능을 이용하기 위해서 찾아보았습니다. 인텔리j에서 기존에 사용하던 파일을 연동하는 방법은 다음과 같습니다. Preferences -> Editor -> File Types 에서 Registered Patterns 에 파일 확장자를 추가합니다. 2019. 10. 25.
[spark] AWS EMR에서 spark-sql을 이용하여 s3 테이블에 데이터를 쓸 때 발생하는 chgrp 오류 AWS의 EMR에서 spark-sql을 이용하여 s3를 로케이션으로 가지는 테이블에 데이터를 쓰면 chgrp 오류가 발생합니다. scala> sql("""insert into table s3_table select * from sample1""").show() -chgrp: '' does not match expected pattern for group Usage: hadoop fs [generic options] -chgrp [-R] GROUP PATH... -chgrp: '' does not match expected pattern for group Usage: hadoop fs [generic options] -chgrp [-R] GROUP PATH... 이 오류가 발생해도 데이터를 생성되는 데 아.. 2019. 3. 26.
[hive][hql] hive 2 의 hqlsql 사용해보기 Hive 2.x 버전에서 hpl이 사용가능하다. hql은 Hybrid Procedural SQL 로서 오라클의 프로시저와 동일하다. SQL을 이용하여 IF, FOR 문 등의 절차형 처리를 가능하게 해준다. 여기(http://www.hplsql.org/home)에서 확인이 가능한데, 주의 할 점은 다른 DB의 프로시저에 구현되어 있는 구문들이 모두 구현되어 있지는 않다. 여기(http://www.hplsql.org/doc)에서 각 명령어가 구현되어 있는지 확인해서 처리하면 된다. hive 2.x 에서는 hqlsql이 사용가능하고, 간단하게 다음과 같이 테스트가 가능하다. 다음과 같이 hpl 파일을 저장한다. -- 10까지의 문자 출력 FOR i IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE.. 2017. 1. 3.
[SQL] 조인 조인 두 개 이상의 테이블을 연결하여 데이터를 조회하는 것 - 등가 조인: 테이블간에 동일한 조건을 이용하여 처리, = 연산자 사용 - 비등가 조인: 테이블간에 동일하지 않은 조건을 이용하여 처리, between, 등의 연산자를 이용하여 처리 - 아웃 조인: 조인 조건을 만족하지 않는 경우에도 결과를 봐야 하는 경우 사용 - 셀프 조인: 자기자신의 정보를 이용하여 조인 처리 카테시안 프로덕트(Cartesian Product) 조인 조건을 생략하거나, 잘 못 설정하여 테이블 간의 모든 데이터가 연결되는 것 SET 연산자 조인을 사용하지 않고 두 개 이상의 테이블의 연관된 데이터를 조회해 오는 방법 - UNION: 테이블 간의 합집합, 중복데이터 제거, 자동으로 정렬 작업 처리 - UNION ALL: 테이블.. 2015. 8. 3.
오라클의 소스코드에 특정 문자열 검색하기 오라클을 유지보수 하다보면 사용자가 작성한 프로시저, 함수, 뷰등의 소스코드 중에서 특정 문자열을 검색하고 싶을 때가 있을 것이다. 이럴 때 이용할 수 있는 쿼리가 다음과 같다. SELECT * FROM all_source aas WHERE aas.NAME LIKE 'XXMSC%' -- object 명 AND aas.owner = 'APPS' -- owner 명 AND (upper(aas.text) LIKE '%CREATE_SOURCE_PGM%') -- 검색하고자 하는 문자열 이렇게 입력하면 문자열이 입력되어 있는 소스명, 타입, 라인번호를 반환해 준다. 2013. 4. 17.
오라클 over() 함수 참고1, 참고2, 참고3, 참고4 over 함수는 group by, order by 를 이용한 서브쿼리의 사용을 편리하게 하기 위해 사용하는 함수이다. 보통 over 함수는 단독으로 사용하기 보다는 count(), max(), min(), sum(), avg(), rank(), row_number() 등과 같은 분석 함수와 함께 사용된다. -- OVER 함수 이용 SELECT NAME, NO, SUM(NO) over(PARTITION BY NAME ORDER BY NAME) FROM ( SELECT 'A' AS NAME, '31' AS NO FROM dual UNION SELECT 'B', '32' FROM dual UNION SELECT 'B', '45' FROM dual UNION SELECT 'D'.. 2013. 4. 17.