インポートしたCSVファイルを使用してという名前のsqlite3(Clementine)dbテーブルのカラム値をsongs
に置き換えたいとします。CSVファイルを使用してテーブル内のすべての列値を更新するにはどうすればよいですか?
CSVファイルには、ターゲットデータベースのフィールド名と一致するヘッダーを持つ3つの列があります。私が "索引付け"したい一般的な列はfilename
です。それは動作しませんでした
update songs
set lastplayed = (select songsnew.lastplayed
where songsnew.filename = songs.filename)
where
exists (
select *
from songsnew
where songsnew.filename = songs.filename
)
:SQLiteBrowserを使用して
は、私は別の答えから取られたこのSQLを試してみました。エラーメッセージは言う:私はSQLiteデータベースブラウザにそのSQLを入力していて、それが正しく識別するため、奇数である
no such column: songsnew.lastplayed: update songs
が... songsnew
表の列filename
「をポップアップ表示します」。
SQLite3やbashを使用すると、CSVをテーブルとしてインポートすることによってのみこれを実行できますか?どの方法が最も簡単で、どのようにして行われますか?一度に1つずつ何千ものレコードを手動で更新することは望ましくありません。
CREATE TABLE `songs` (
`title` TEXT,
`album` TEXT,
`artist` TEXT,
`albumartist` TEXT,
`composer` TEXT,
`track` INTEGER,
`disc` INTEGER,
`bpm` REAL,
`year` INTEGER,
`genre` TEXT,
`comment` TEXT,
`compilation` INTEGER,
`length` INTEGER,
`bitrate` INTEGER,
`samplerate` INTEGER,
`directory` INTEGER NOT NULL,
`filename` TEXT NOT NULL,
`mtime` INTEGER NOT NULL,
`ctime` INTEGER NOT NULL,
`filesize` INTEGER NOT NULL,
`sampler` INTEGER NOT NULL DEFAULT '0',
`art_automatic` TEXT,
`art_manual` TEXT,
`filetype` INTEGER NOT NULL DEFAULT '0',
`playcount` INTEGER NOT NULL DEFAULT '0',
`lastplayed` INTEGER,
`rating` INTEGER,
`forced_compilation_on` INTEGER NOT NULL DEFAULT '0',
`forced_compilation_off` INTEGER NOT NULL DEFAULT '0',
`effective_compilation` TEXT NOT NULL DEFAULT '0',
`skipcount` INTEGER NOT NULL DEFAULT '0',
`score` INTEGER NOT NULL DEFAULT '0',
`beginning` INTEGER NOT NULL DEFAULT '0',
`cue_path` TEXT,
`unavailable` INTEGER DEFAULT '0',
`effective_albumartist` TEXT,
`etag` TEXT,
`performer` TEXT,
`grouping` TEXT
);
...と、ここでCSVファイルのインポート後songsnewスキーマです:
ここでは、コメントで要求されたように最初のスキーマsongs
です。ここ
CREATE TABLE `songsnew` (
`filename` TEXT,
`playcount` TEXT,
`lastplayed` TEXT
);
どのようにしてSQLiteBrowserにデータを取得しましたか?あなたがそれをインポートした場合、それはすでにそこにあります。 'sqlite3'コマンドラインシェルに' .schema'の出力を表示します。 –
OK - 上記に追加されました。 – user3447273
コラムがあります。同じデータベースにインポートしましたか? –