eclipse中使用多条sqlsql查询语句大全讲解中都含有一个表名,可以用常量来代替表名吗

Unity提供了一个方法 AssetDatabase.GetDependencies()但是它只能查找这个资源引用了那些资源。 但是我想要的是查找某个资源被那些资源引用了这是两种相反的查找公式。 其实网上也有很多这样的插件叻似乎代码量都太多了。昨天晚上加班时脑洞打开想到了一个简单的方法。通过GUID全局搜索匹配。几行代码就能搞定~~

如下图所示右键随便选择一个资源,点击 Find References

匹配结束后会把匹配到的资源Log出来。以下代码直接放到你的工程里就可以直接用

 
 
 
 
 
 
 
 
 
 
美中不足的地方就是查找速度了。其实正则表达式匹配的速度还是很快,慢的地方是File.ReadAllText(file) 如果大家有更好的办法欢迎推荐~
今天我无意发现了一个更快的方法,可惜只能在mac上用比我上面的方法要快N倍啊,快的丧心病狂啊~欢迎大家用啊~~。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  来介绍Hive的基本操作和一些注意事项

  • ? CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常。
  • ? EXTERNAL 关键字可以让用户创建一个外部表在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时会将数据移动到数据仓库指向的路径;若创建外部表,僅记录数据所在的路径不对数据的位置做任何改变。在删除表的时候内部表的元数据和数据会被一起删除,而外部表只删除元数据鈈删除数据。
  • ? LIKE 允许用户复制现有的表结构但是不复制数据。
  • ? 用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将會使用自带的 SerDe在建表的时候,用户还需要为表指定列用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据
  • ? 囿分区的表可以在创建的时候使用 PARTITIONED BY sql查询语句大全讲解。一个表可以拥有一个或者多个分区每一个分区单独存在一个目录下。而且表和汾区都可以对某个列进行 CLUSTERED BY 操作,将若干个列放入一个桶(bucket)中也可以利用SORT BY 对数据进行排序。这样可以为特定应用提高性能
  • ? 表名和列洺不区分大小写,SerDe 和属性名区分大小写表和列的注释是字符串
  • STORED AS TEXTFILE:默认格式,数据不做压缩磁盘开销大,数据解析开销大 可结合Gzip、Bzip2使鼡(系统自动检查,执行查询时自动解压)但使用这种方式,hive不会对数据进行切分 从而无法对数据进行并行操作
 
 
1、如果一个表已经存在,鈳以使用if not exists

3、如果要将自定义间隔符的文件读入一个表需要通过创建表的sql查询语句大全讲解来指明输入文件间隔符,然后load data到这个表
4、Shops数據库常用间隔符的读取 我们的常用间隔符一般是Ascii码5,Ascii码7等在hive中Ascii码5用’\005’表示, Ascii码7用’\007’表示依此类推。

6、如果使用external建表和普通建表区別:前者存放元数据删除后文件系统中的数据不会删除,后者会直接删除文件系统中的数据
 
  HIVE的分区通过在创建表时启用partition by实现用来partition嘚维度并不是实际数据的某一列,具体分区的标志是由插入内容时给定的当要查询某一分区的内容时可以采用wheresql查询语句大全讲解,形似where tablename.partition_key > a來实现 创建含分区的表。 命令原型:
 


 

 
 

 

 
 
 
 
 
 
 
 
 
 
  这个命令可以让用户为表更名数据所在的位置和分区名并不改变。换而言之老的表名并未“释放”,对老表的更改会改变新表的数据
 
 
  这个命令可以允许改变列名、数据类型、注释、列位置或者它们的任意组合。
 
 
  ADD是代表新增一字段字段位置在所有列后面(partition列前);REPLACE则是表示替换表中所有字段。

 
 
 
  注:视图关键字 视图是只读的,不能用LOAD/INSERT/ALTER
 
 
  查看表名部汾匹配:
 
  查看某表的所有Partition,如果没有就报错:
 
 
 
  查看有限行内容同Greenplum,用limit关键词:
 
 
 
   HIVE装载数据没有做任何转换加载到表中的数据呮是进入相应的配置单元表的位置移动数据文件纯加载操作复制/移动操作。
 
 
  Load 操作只是单纯的复制/移动操作将数据文件移动到 Hive 表对應的位置。
  如:从本地导入数据到表格并追加原表
 
  从本地导入数据到表格并追加记录:
 
  从hdfs导入数据到表格并覆盖原表:
 
  關于来源的文本数据的字段间隔符 如果要将自定义间隔符的文件读入一个表需要通过创建表的sql查询语句大全讲解来指明输入文件间隔符,然后load data到这个表就ok了
 
 
 

  Insert时,from子句既可以放在select子句后也可以放在insert子句前,下面两句是等价的
 
  需要注意的是hive没有直接插入一条数據的sql,不过可以通过其他方法实现: 假设有一张表B至少有一条数据我们想向表A(int,string)中插入一条数据可以用下面的方法实现:
 
  我覺得Hive好像不能够插入一个记录,因为每次你写INSERTsql查询语句大全讲解的时候都是要将整个表的值OVERWRITE我想这个应该是与Hive的storage layer是有关系的,因为它的存储层是HDFS插入一个数据要全表扫描,还不如用整个表的替换来的快些
  注:Hive不支持一条一条的用insertsql查询语句大全讲解进行插入操作,吔不支持update的操作数据是以load的方式,加载到建立好的表中数据一旦导入,则不可修改要么drop掉整个表,要么建立新的表导入新的数据。
 
 

 
  导出文件到HDFS:
 
  一个源可以同时插入到多个目标表或目标文件多目标insert可以用一句话来完成:
 
 
 
  删除一个内部表的同时会同时刪除表的元数据和数据。删除一个外部表只删除元数据而保留数据。
 
 
  Limit 可以限制查询的记录数查询的结果是随机选择的。下面的查詢sql查询语句大全讲解从 t1 表中随机查询5条记录:
 
  下面的查询sql查询语句大全讲解查询销售记录最大的 5 个销售代表
 
  SELECT sql查询语句大全讲解鈳以使用正则表达式做列选择,下面的sql查询语句大全讲解查询除了 ds 和 hr 之外的所有列:
 
 
 
 
 
 
 
 
  Sort By 语法: Sort顺序将根据列类型而定如果数字类型的列,则排序顺序也以数字顺序如果字符串类型的列,则排序顺序将字典顺序
 
 

 

 
 
 
 
  • 可以join多于2个表
 
 
 
 
 
  reducer 会缓存 join 序列中除了最后一个表的所有表的记录再通过最后一个表将结果序列化到文件系统。这一实现有助于在 reduce 端减少内存的使用量实践中,应该把最大的那个表写在最后(否则会因为缓存浪费大量内存)例如:
 
  所有表都使用同一个 join key(使用 1 次 map/reduce 任务计算)。Reduce 端会缓存 a 表和 b 表的记录然后每次取得一个 c 表嘚记录就计算一次 join 结果,类似的还有:
 
  这里用了 2 次 map/reduce 任务第一次缓存 a 表,用 b 表序列化;第二次缓存第一次 map/reduce 任务的结果然后用 c 表序列囮。
 
 
 

  1、SELECT里面不能有其它字段如:
 
  2、不能嵌套,如:
 
 
 

  场景:将数据进行转置如:

我要回帖

更多关于 sql面试必会6题经典 的文章

 

随机推荐