Unity提供了一个方法 AssetDatabase.GetDependencies()但是它只能查找这个资源引用了那些资源。 但是我想要的是查找某个资源被那些资源引用了这是两种相反的查找公式。 其实网上也有很多这样的插件叻似乎代码量都太多了。昨天晚上加班时脑洞打开想到了一个简单的方法。通过GUID全局搜索匹配。几行代码就能搞定~~
如下图所示右键随便选择一个资源,点击 Find References
匹配结束后会把匹配到的资源Log出来。以下代码直接放到你的工程里就可以直接用
美中不足的地方就是查找速度了。其实正则表达式匹配的速度还是很快,慢的地方是File.ReadAllText(file) 如果大家有更好的办法欢迎推荐~
今天我无意发现了一个更快的方法,可惜只能在mac上用比我上面的方法要快N倍啊,快的丧心病狂啊~欢迎大家用啊~~。
来介绍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顺序将根据列类型而定如果数字类型的列,则排序顺序也以数字顺序如果字符串类型的列,则排序顺序将字典顺序
reducer 会缓存 join 序列中除了最后一个表的所有表的记录再通过最后一个表将结果序列化到文件系统。这一实现有助于在 reduce 端减少内存的使用量实践中,应该把最大的那个表写在最后(否则会因为缓存浪费大量内存)例如:
所有表都使用同一个 join key(使用 1 次 map/reduce 任务计算)。Reduce 端会缓存 a 表和 b 表的记录然后每次取得一个 c 表嘚记录就计算一次 join 结果,类似的还有:
这里用了 2 次 map/reduce 任务第一次缓存 a 表,用 b 表序列化;第二次缓存第一次 map/reduce 任务的结果然后用 c 表序列囮。
1、SELECT里面不能有其它字段如:
2、不能嵌套,如:
场景:将数据进行转置如: