TreasureDataでカラム名に大文字が入ってしまった場合のメモ
Treasure Dataで、テーブルへのスキーマ設定の際に、カラム名に大文字が入っていると現状では設定できない。
Schemas currently support column names consisting of lowercase alphabets, numbers, and "_" only.
http://docs.treasuredata.com/articles/schema#setting-custom-schema
現状は、データの入れ直しをする必要があるので、全データの入れ直しの手順をメモする。
まず、該当するテーブルに対して、クエリを発行する。
SELECT
*
FROM
(TABLE)
LIMIT 1
上記を実行すると、vカラムの全データとtimeが1行出力される。
v:map time:int
クエリの実行結果をjson形式でダウンロードし、エディタで開く。
["v","time"]
[{"id":"hi","time":"1334102460"},1334102460]
上記からスクリプト用にいらんとこを消しておく。
{"id":"hi","time":"1334102460"}
スクリプトの(jobid)とtablenameを環境に合わせて書き換えて、スクリプトを実行し、標準出力をWebコンソールにコピペする。
# encoding: utf-8
require 'json'
header = JSON.parse(File.read("~.json", :encoding=>"UTF-8"))
db = "dbname"
table = "tablename"
cnt = 0
puts "-- #{db}.#{table}"
puts "SELECT "
header.each_key do |key|
cnt += 1
puts "v['#{key}'] AS #{key.downcase}," if key != 'time' and cnt != header.length
puts "v['#{key}'] AS #{key.downcase}" if key != 'time' and cnt == header.length
puts "#{key} AS #{key.downcase}," if key == 'time' and cnt != header.length
puts "#{key} AS #{key.downcase}" if key == 'time' and cnt == header.length
end
puts "FROM #{table}"
実行時の結果出力先にTreasureDataを選び、空のテーブルに出力する。
最後にローカルのtdコマンドのswapを実行するとテーブル名の入れ替えができる。
$ td table:swap <db> <スキーマに大文字があるテーブル> <先ほどの結果を出力したテーブル>
Treasure DataについてにRelease Notesが見れるようになりましたね。
http://help.treasuredata.com/customer/portal/topics/624353-release-notes/articles
以上。
Author And Source
この問題について(TreasureDataでカラム名に大文字が入ってしまった場合のメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/toru-takahashi/items/31dbba384ca1ee03f1c2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .