2016-04-12 13 views
-3

テーブルに次の列があります。SQL Server:列の値を5列に解析します

daily;1;21/03/2015;times;10 
daily;1;01/02/2016;times;8 
monthly;1;01/01/2016;times;2 
weekly;1;21/01/2016;times;4 

どのように私は別の列に;区切り文字で、これを解析することができますか?

+1

あなたは上の複数の解決策を見つけることができます。http://sqlperformance.com/2012/07/tを-sql-queries/split-strings – FLICKER

+1

[アイテムxにアクセスできるように文字列を分割するにはどうすればよいですか?](http: /stackoverflow.com/questions/2647/how-do-i-split-a-string-so-i-can-access-item-x) –

答えて

-1

これを行うには、パンダにセミコロンで区切り、SQL Serverに戻す方法があります。私がテストした例は下記を参照してください。

テストデータSETUP

enter image description here

CODE

import sqlalchemy as sa 
import urllib 
import pandas as pd 


server = 'yourserver' 

read_database = 'db_to_read_data_from' 
write_database = 'db_to_write_data_to' 

read_tablename = 'table_to_read_from' 
write_tablename = 'table_to_write_to' 

read_params = urllib.quote_plus("DRIVER={SQL Server};SERVER="+server+";DATABASE="+read_database+";TRUSTED_CONNECTION=Yes") 
read_engine = sa.create_engine("mssql+pyodbc:///?odbc_connect=%s" % read_params) 

write_params = urllib.quote_plus("DRIVER={SQL Server};SERVER="+server+";DATABASE="+write_database+";TRUSTED_CONNECTION=Yes") 
write_engine = sa.create_engine("mssql+pyodbc:///?odbc_connect=%s" % write_params) 

#Read from SQL into DF 
Table_DF = pd.read_sql(read_tablename, con=read_engine) 
#Delimit by semicolon 
parsed_DF = Table_DF['string_column'].apply(lambda x: pd.Series(x.split(';'))) 
#write DF back to SQL 
parsed_DF.to_sql(write_tablename,write_engine,if_exists='append') 

RESULT enter image description here

関連する問題